PersistedAssemblyBuilder 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
어셈블리를 디스크 또는 스트림에 유지할 수 있는 AssemblyBuilder 구현을 제공합니다.
public ref class PersistedAssemblyBuilder sealed : System::Reflection::Emit::AssemblyBuilder
public sealed class PersistedAssemblyBuilder : System.Reflection.Emit.AssemblyBuilder
type PersistedAssemblyBuilder = class
inherit AssemblyBuilder
Public NotInheritable Class PersistedAssemblyBuilder
Inherits AssemblyBuilder
- 상속
설명
구현은 이식되지 않은 Windows 관련 네이티브 코드에 크게 의존하기 때문에 AssemblyBuilder.Save API는 원래 .NET(Core)로 이식되지 않았습니다. .NET 9는 저장을 지원하는 완전 관리 PersistedAssemblyBuilder 구현을 제공하는 Reflection.Emit 클래스를 추가했습니다. 이 구현은 기존 런타임별 Reflection.Emit 구현에 종속되지 않습니다. 즉, 이제 .NET에는 실행 가능 하고 지속 가능한 두 가지 구현 이 있습니다. 지속형 어셈블리를 실행하려면 먼저 메모리 스트림 또는 파일에 저장한 다음 다시 로드합니다.
PersistedAssemblyBuilder전에 생성된 어셈블리만 실행하고 저장할 수 없습니다. 어셈블리가 메모리 내 전용이므로 디버그하기가 어려웠습니다. 동적 어셈블리를 파일에 저장할 경우의 장점은 다음과 같습니다.
- ILVerify와 같은 도구를 사용하여 생성된 어셈블리를 확인하거나 디컴파일하고 ILSpy와 같은 도구를 사용하여 수동으로 검사할 수 있습니다.
- 저장된 어셈블리를 다시 컴파일할 필요 없이 직접 로드할 수 있으므로 애플리케이션 시작 시간이 단축될 수 있습니다.
PersistedAssemblyBuilder 인스턴스를 만들려면 PersistedAssemblyBuilder(AssemblyName, Assembly, IEnumerable<CustomAttributeBuilder>) 생성자를 사용합니다.
coreAssembly 매개 변수는 기본 런타임 형식을 확인하는 데 사용되며 참조 어셈블리 버전 관리 확인에 사용할 수 있습니다.
Reflection.Emit이(가) 컴파일러가 실행 중인 런타임 버전과 동일한 런타임 버전에서만 실행되는 어셈블리를 생성하는 데 사용되는 경우(일반적으로 인프로세스에서), 핵심 어셈블리는 단순히typeof(object).Assembly이 될 수 있습니다. 다음 예제에서는 어셈블리를 만들고 스트림에 저장하고 현재 런타임 어셈블리를 사용하여 실행하는 방법을 보여 줍니다.public static void CreateSaveAndRunAssembly() { PersistedAssemblyBuilder ab = new(new AssemblyName("MyAssembly"), typeof(object).Assembly); ModuleBuilder mob = ab.DefineDynamicModule("MyModule"); TypeBuilder tb = mob.DefineType( "MyType", TypeAttributes.Public | TypeAttributes.Class); MethodBuilder meb = tb.DefineMethod( "SumMethod", MethodAttributes.Public | MethodAttributes.Static, typeof(int), [typeof(int), typeof(int)]); ILGenerator il = meb.GetILGenerator(); il.Emit(OpCodes.Ldarg_0); il.Emit(OpCodes.Ldarg_1); il.Emit(OpCodes.Add); il.Emit(OpCodes.Ret); tb.CreateType(); using var stream = new MemoryStream(); ab.Save(stream); // Or pass filename to save into a file. stream.Seek(0, SeekOrigin.Begin); Assembly assembly = AssemblyLoadContext.Default.LoadFromStream(stream); MethodInfo method = assembly.GetType("MyType").GetMethod("SumMethod"); Console.WriteLine(method.Invoke(null, [5, 10])); }Reflection.Emit특정 TFM을 대상으로 하는 어셈블리를 생성하는 데 사용되는 경우,MetadataLoadContext을 사용하여 지정된 TFM에 대한 레퍼런스 어셈블리를 열고, 에 대해coreAssembly속성의 값을 사용합니다. 이 값을 사용하면 생성기가 하나의 .NET 런타임 버전에서 실행되고 다른 .NET 런타임 버전을 대상으로 할 수 있습니다. 핵심 형식을 참조할 때MetadataLoadContext인스턴스에서 반환된 형식을 사용해야 합니다. 예를 들어,typeof(int)대신System.Int32에서 이름으로MetadataLoadContext.CoreAssembly유형을 찾습니다.public static void CreatePersistedAssemblyBuilderCoreAssemblyWithMetadataLoadContext(string refAssembliesPath) { PathAssemblyResolver resolver = new(Directory.GetFiles(refAssembliesPath, "*.dll")); using MetadataLoadContext context = new(resolver); Assembly coreAssembly = context.CoreAssembly; PersistedAssemblyBuilder ab = new(new AssemblyName("MyDynamicAssembly"), coreAssembly); TypeBuilder typeBuilder = ab.DefineDynamicModule("MyModule").DefineType("Test", TypeAttributes.Public); MethodBuilder methodBuilder = typeBuilder.DefineMethod("Method", MethodAttributes.Public, coreAssembly.GetType(typeof(int).FullName), Type.EmptyTypes); // .. add members and save the assembly }
실행 파일의 진입점 설정
실행 파일의 진입점을 설정하거나 어셈블리 파일에 대한 다른 옵션을 설정하려면 public MetadataBuilder GenerateMetadata(out BlobBuilder ilStream, out BlobBuilder mappedFieldData) 메서드를 호출하고 채워진 메타데이터를 사용하여 원하는 옵션을 사용하여 어셈블리를 생성할 수 있습니다. 예를 들면 다음과 같습니다.
public static void SetEntryPoint()
{
PersistedAssemblyBuilder ab = new(new AssemblyName("MyAssembly"), typeof(object).Assembly);
TypeBuilder tb = ab.DefineDynamicModule("MyModule").DefineType("MyType", TypeAttributes.Public | TypeAttributes.Class);
// ...
MethodBuilder entryPoint = tb.DefineMethod("Main", MethodAttributes.HideBySig | MethodAttributes.Public | MethodAttributes.Static);
ILGenerator il2 = entryPoint.GetILGenerator();
// ...
il2.Emit(OpCodes.Ret);
tb.CreateType();
MetadataBuilder metadataBuilder = ab.GenerateMetadata(out BlobBuilder ilStream, out BlobBuilder fieldData);
ManagedPEBuilder peBuilder = new(
header: PEHeaderBuilder.CreateExecutableHeader(),
metadataRootBuilder: new MetadataRootBuilder(metadataBuilder),
ilStream: ilStream,
mappedFieldData: fieldData,
entryPoint: MetadataTokens.MethodDefinitionHandle(entryPoint.MetadataToken));
BlobBuilder peBlob = new();
peBuilder.Serialize(peBlob);
// Create the executable:
using FileStream fileStream = new("MyAssembly.exe", FileMode.Create, FileAccess.Write);
peBlob.WriteContentTo(fileStream);
}
기호 내보내기 및 PDB 생성
기호 메타데이터는 pdbBuilder 인스턴스에서 GenerateMetadata(BlobBuilder, BlobBuilder) 메서드를 호출할 때 PersistedAssemblyBuilder out 매개 변수로 채워집니다. 이식 가능한 PDB를 사용하여 어셈블리를 만들려면 다음을 수행합니다.
- ISymbolDocumentWriter 메서드를 사용하여 ModuleBuilder.DefineDocument(String, Guid, Guid, Guid) 인스턴스를 만듭니다. 메서드의 IL을 내보내는 동안 해당 기호 정보도 내보냅니다.
-
PortablePdbBuilder 메서드에서 생성된
pdbBuilder인스턴스를 사용하여 GenerateMetadata(BlobBuilder, BlobBuilder) 인스턴스를 만듭니다. -
PortablePdbBuilder을(를) Blob로 직렬화하고, (독립 실행형 PDB를 생성하는 경우에만)Blob를 PDB 파일 스트림에 기록합니다. - DebugDirectoryBuilder 인스턴스를 만들고 DebugDirectoryBuilder.AddCodeViewEntry(독립 실행형 PDB) 또는 DebugDirectoryBuilder.AddEmbeddedPortablePdbEntry추가합니다.
-
debugDirectoryBuilder인스턴스를 만들 때 선택적 PEBuilder 인수를 설정합니다.
다음 예제에서는 기호 정보를 내보내고 PDB 파일을 생성하는 방법을 보여 줍니다.
static void GenerateAssemblyWithPdb()
{
PersistedAssemblyBuilder ab = new PersistedAssemblyBuilder(new AssemblyName("MyAssembly"), typeof(object).Assembly);
ModuleBuilder mb = ab.DefineDynamicModule("MyModule");
TypeBuilder tb = mb.DefineType("MyType", TypeAttributes.Public | TypeAttributes.Class);
MethodBuilder mb1 = tb.DefineMethod("SumMethod", MethodAttributes.Public | MethodAttributes.Static, typeof(int), [typeof(int), typeof(int)]);
ISymbolDocumentWriter srcDoc = mb.DefineDocument("MySourceFile.cs", SymLanguageType.CSharp);
ILGenerator il = mb1.GetILGenerator();
LocalBuilder local = il.DeclareLocal(typeof(int));
local.SetLocalSymInfo("myLocal");
il.MarkSequencePoint(srcDoc, 7, 0, 7, 11);
...
il.Emit(OpCodes.Ret);
MethodBuilder entryPoint = tb.DefineMethod("Main", MethodAttributes.HideBySig | MethodAttributes.Public | MethodAttributes.Static);
ILGenerator il2 = entryPoint.GetILGenerator();
il2.BeginScope();
...
il2.EndScope();
...
tb.CreateType();
MetadataBuilder metadataBuilder = ab.GenerateMetadata(out BlobBuilder ilStream, out _, out MetadataBuilder pdbBuilder);
MethodDefinitionHandle entryPointHandle = MetadataTokens.MethodDefinitionHandle(entryPoint.MetadataToken);
DebugDirectoryBuilder debugDirectoryBuilder = GeneratePdb(pdbBuilder, metadataBuilder.GetRowCounts(), entryPointHandle);
ManagedPEBuilder peBuilder = new ManagedPEBuilder(
header: new PEHeaderBuilder(imageCharacteristics: Characteristics.ExecutableImage, subsystem: Subsystem.WindowsCui),
metadataRootBuilder: new MetadataRootBuilder(metadataBuilder),
ilStream: ilStream,
debugDirectoryBuilder: debugDirectoryBuilder,
entryPoint: entryPointHandle);
BlobBuilder peBlob = new BlobBuilder();
peBuilder.Serialize(peBlob);
using var fileStream = new FileStream("MyAssembly.exe", FileMode.Create, FileAccess.Write);
peBlob.WriteContentTo(fileStream);
}
static DebugDirectoryBuilder GeneratePdb(MetadataBuilder pdbBuilder, ImmutableArray<int> rowCounts, MethodDefinitionHandle entryPointHandle)
{
BlobBuilder portablePdbBlob = new BlobBuilder();
PortablePdbBuilder portablePdbBuilder = new PortablePdbBuilder(pdbBuilder, rowCounts, entryPointHandle);
BlobContentId pdbContentId = portablePdbBuilder.Serialize(portablePdbBlob);
// In case saving PDB to a file
using FileStream fileStream = new FileStream("MyAssemblyEmbeddedSource.pdb", FileMode.Create, FileAccess.Write);
portablePdbBlob.WriteContentTo(fileStream);
DebugDirectoryBuilder debugDirectoryBuilder = new DebugDirectoryBuilder();
debugDirectoryBuilder.AddCodeViewEntry("MyAssemblyEmbeddedSource.pdb", pdbContentId, portablePdbBuilder.FormatVersion);
// In case embedded in PE:
// debugDirectoryBuilder.AddEmbeddedPortablePdbEntry(portablePdbBlob, portablePdbBuilder.FormatVersion);
return debugDirectoryBuilder;
}
먼저 CustomDebugInformation 인스턴스에서 MetadataBuilder.AddCustomDebugInformation(EntityHandle, GuidHandle, BlobHandle) 메서드를 호출하여 원본 포함 및 원본 인덱싱 고급 PDB 정보를 추가한 후, pdbBuilder을 추가할 수 있습니다.
private static void EmbedSource(MetadataBuilder pdbBuilder)
{
byte[] sourceBytes = File.ReadAllBytes("MySourceFile2.cs");
BlobBuilder sourceBlob = new BlobBuilder();
sourceBlob.WriteBytes(sourceBytes);
pdbBuilder.AddCustomDebugInformation(MetadataTokens.DocumentHandle(1),
pdbBuilder.GetOrAddGuid(new Guid("0E8A571B-6926-466E-B4AD-8AB04611F5FE")), pdbBuilder.GetOrAddBlob(sourceBlob));
}
PersistedAssemblyBuilder를 사용하여 리소스 추가
MetadataBuilder.AddManifestResource(ManifestResourceAttributes, StringHandle, EntityHandle, UInt32) 호출하여 필요한 만큼 리소스를 추가할 수 있습니다. 스트림은 하나의 BlobBuilder로 연결되어 ManagedPEBuilder 인수에 전달되어야 합니다. 다음 예제에서는 리소스를 만들고 만든 어셈블리에 연결하는 방법을 보여 줍니다.
public static void SetResource()
{
PersistedAssemblyBuilder ab = new(new AssemblyName("MyAssembly"), typeof(object).Assembly);
ab.DefineDynamicModule("MyModule");
MetadataBuilder metadata = ab.GenerateMetadata(out BlobBuilder ilStream, out _);
using MemoryStream stream = new();
ResourceWriter myResourceWriter = new(stream);
myResourceWriter.AddResource("AddResource 1", "First added resource");
myResourceWriter.AddResource("AddResource 2", "Second added resource");
myResourceWriter.AddResource("AddResource 3", "Third added resource");
myResourceWriter.Close();
byte[] data = stream.ToArray();
BlobBuilder resourceBlob = new();
resourceBlob.WriteInt32(data.Length);
resourceBlob.WriteBytes(data);
metadata.AddManifestResource(
ManifestResourceAttributes.Public,
metadata.GetOrAddString("MyResource.resources"),
implementation: default,
offset: 0);
ManagedPEBuilder peBuilder = new(
header: PEHeaderBuilder.CreateLibraryHeader(),
metadataRootBuilder: new MetadataRootBuilder(metadata),
ilStream: ilStream,
managedResources: resourceBlob);
BlobBuilder blob = new();
peBuilder.Serialize(blob);
// Create the assembly:
using FileStream fileStream = new("MyAssemblyWithResource.dll", FileMode.Create, FileAccess.Write);
blob.WriteContentTo(fileStream);
}
다음 예제에서는 만든 어셈블리에서 리소스를 읽는 방법을 보여 줍니다.
public static void ReadResource()
{
Assembly readAssembly = Assembly.LoadFile(Path.Combine(
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
"MyAssemblyWithResource.dll"));
// Use ResourceManager.GetString() to read the resources.
ResourceManager rm = new("MyResource", readAssembly);
Console.WriteLine("Using ResourceManager.GetString():");
Console.WriteLine($"{rm.GetString("AddResource 1", CultureInfo.InvariantCulture)}");
Console.WriteLine($"{rm.GetString("AddResource 2", CultureInfo.InvariantCulture)}");
Console.WriteLine($"{rm.GetString("AddResource 3", CultureInfo.InvariantCulture)}");
// Use ResourceSet to enumerate the resources.
Console.WriteLine();
Console.WriteLine("Using ResourceSet:");
ResourceSet resourceSet = rm.GetResourceSet(CultureInfo.InvariantCulture, createIfNotExists: true, tryParents: false);
foreach (DictionaryEntry entry in resourceSet)
{
Console.WriteLine($"Key: {entry.Key}, Value: {entry.Value}");
}
// Use ResourceReader to enumerate the resources.
Console.WriteLine();
Console.WriteLine("Using ResourceReader:");
using Stream stream = readAssembly.GetManifestResourceStream("MyResource.resources")!;
using ResourceReader reader = new(stream);
foreach (DictionaryEntry entry in reader)
{
Console.WriteLine($"Key: {entry.Key}, Value: {entry.Value}");
}
}
메모
모든 멤버에 대한 메타데이터 토큰은 Save 연산에서 설정됩니다. 생성된 형식 및 해당 멤버의 토큰은 기본값을 가지거나 예외를 발생시킬 수 있으니 저장하기 전에 사용하지 마세요. 생성되지 않고 참조되는 형식에 토큰을 사용하는 것이 안전합니다.
어셈블리를 내보내는 데 중요하지 않은 일부 API는 구현되지 않습니다. 예를 들어 GetCustomAttributes() 구현되지 않습니다. 런타임 구현을 사용하면 형식을 만든 후 해당 API를 사용할 수 있었습니다. 지속형 AssemblyBuilder의 경우에는 NotSupportedException을 던지거나 NotImplementedException를 사용합니다. 이러한 API가 필요한 시나리오가 있는 경우 dotnet/runtime 리포지토리문제를 제출합니다.
어셈블리 파일을 생성하는 다른 방법은 MetadataBuilder참조하세요.
Warning
PersistedAssemblyBuilder API에는 컴파일러와 같은 다른 기술과 유사하게 신뢰할 수 있는 입력이 있는 완전히 신뢰할 수 있는 환경이 필요합니다. 생성된 IL AssemblyBuilder 에 대해 포함할 수 있는 기본 유효성 검사 이외의 제한 사항은 없습니다. 여기에는 사용자 지정 특성과 같은 멤버 이름, 개수 및 관련 메타데이터에 대한 유효성 검사가 포함됩니다.
생성자
| Name | Description |
|---|---|
| PersistedAssemblyBuilder(AssemblyName, Assembly, IEnumerable<CustomAttributeBuilder>) |
파일 또는 스트림에 PersistedAssemblyBuilder 저장할 수 있는 인스턴스를 만듭니다. |
속성
| Name | Description |
|---|---|
| CodeBase |
사용되지 않음.
원래 지정된 어셈블리의 위치(예: AssemblyName 개체)를 가져옵니다. (다음에서 상속됨 AssemblyBuilder) |
| CustomAttributes |
이 어셈블리의 사용자 지정 특성을 포함하는 컬렉션을 가져옵니다. (다음에서 상속됨 Assembly) |
| EntryPoint |
이 어셈블리의 진입점을 반환합니다. (다음에서 상속됨 AssemblyBuilder) |
| EscapedCodeBase |
사용되지 않음.
사용되지 않음.
코드베이스를 나타내는 이스케이프 문자를 포함한 URI를 가져옵니다. (다음에서 상속됨 Assembly) |
| ExportedTypes |
어셈블리 외부에 표시되는 이 어셈블리에 정의된 public 형식의 컬렉션을 가져옵니다. (다음에서 상속됨 Assembly) |
| FullName |
현재 동적 어셈블리의 표시 이름을 가져옵니다. |
| HostContext |
동적 어셈블리를 만드는 호스트 컨텍스트를 가져옵니다. (다음에서 상속됨 AssemblyBuilder) |
| IsCollectible |
이 동적 어셈블리가 수집 가능한 AssemblyLoadContext어셈블리에 있는지 여부를 나타내는 값을 가져옵니다. (다음에서 상속됨 AssemblyBuilder) |
| IsDynamic |
현재 어셈블리가 동적 어셈블리임을 나타내는 값을 가져옵니다. (다음에서 상속됨 AssemblyBuilder) |
| IsFullyTrusted |
현재 어셈블리가 완전 신뢰로 로드되는지 여부를 나타내는 값을 가져옵니다. (다음에서 상속됨 Assembly) |
| Location |
섀도 복사되지 않은 경우 매니페스트가 포함된 로드된 파일의 위치를 코드베이스 형식으로 가져옵니다. (다음에서 상속됨 AssemblyBuilder) |
| ManifestModule |
어셈블리 매니페스트가 포함된 현재 PersistedAssemblyBuilder 모듈을 가져옵니다. |
| ReflectionOnly |
동적 어셈블리가 리플렉션 전용 컨텍스트에 있는지 여부를 나타내는 값을 가져옵니다. (다음에서 상속됨 AssemblyBuilder) |
메서드
| Name | Description |
|---|---|
| CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
이 어셈블리에서 지정된 형식을 찾아서 시스템 활성화기를 사용하여 인스턴스를 만들고, 선택적 대/소문자 구분 검색과 지정된 문화권, 인수, 바인딩 및 활성화 특성을 갖습니다. (다음에서 상속됨 Assembly) |
| CreateInstance(String, Boolean) |
이 어셈블리에서 지정된 형식을 찾아서 선택적 대/소문자 구분 검색과 함께 시스템 활성화기를 사용하여 인스턴스를 만듭니다. (다음에서 상속됨 Assembly) |
| CreateInstance(String) |
이 어셈블리에서 지정된 형식을 찾고 대/소문자를 구분하는 검색을 사용하여 시스템 활성화기를 사용하여 인스턴스를 만듭니다. (다음에서 상속됨 Assembly) |
| DefineDynamicModule(String) |
이 어셈블리에서 명명된 임시 동적 모듈을 정의합니다. (다음에서 상속됨 AssemblyBuilder) |
| DefineDynamicModuleCore(String) |
파생 클래스에서 재정의되는 경우 이 어셈블리에서 동적 모듈을 정의합니다. (다음에서 상속됨 AssemblyBuilder) |
| Equals(Object) |
이 인스턴스가 지정된 개체와 같은지 여부를 나타내는 값을 반환합니다. (다음에서 상속됨 AssemblyBuilder) |
| GenerateMetadata(BlobBuilder, BlobBuilder, MetadataBuilder) |
에 대한 메타데이터를 PersistedAssemblyBuilder생성합니다. |
| GenerateMetadata(BlobBuilder, BlobBuilder) |
에 대한 메타데이터를 PersistedAssemblyBuilder생성합니다. |
| GetCustomAttributes(Boolean) |
현재 AssemblyBuilder에 적용된 모든 사용자 지정 특성을 반환합니다. (다음에서 상속됨 AssemblyBuilder) |
| GetCustomAttributes(Type, Boolean) |
현재 AssemblyBuilder에 적용되고 지정된 특성 형식에서 파생된 모든 사용자 지정 특성을 반환합니다. (다음에서 상속됨 AssemblyBuilder) |
| GetCustomAttributesData() |
현재CustomAttributeData에 적용된 특성에 대한 정보가 들어 있는 개체를 반환 AssemblyBuilder 합니다. (다음에서 상속됨 AssemblyBuilder) |
| GetDynamicModule(String) |
지정된 이름의 동적 모듈을 반환합니다. (다음에서 상속됨 AssemblyBuilder) |
| GetDynamicModuleCore(String) |
파생 클래스에서 재정의되는 경우 지정된 이름의 동적 모듈을 반환합니다. (다음에서 상속됨 AssemblyBuilder) |
| GetExportedTypes() |
이 어셈블리에 정의된 내보낸 형식을 가져옵니다. (다음에서 상속됨 AssemblyBuilder) |
| GetFile(String) |
FileStream 이 어셈블리 매니페스트의 파일 테이블에서 지정된 파일에 대한 a를 가져옵니다. (다음에서 상속됨 AssemblyBuilder) |
| GetFiles() |
어셈블리 매니페스트의 파일 테이블에 있는 파일을 가져옵니다. (다음에서 상속됨 Assembly) |
| GetFiles(Boolean) |
리소스 모듈을 포함할지 여부를 지정하여 어셈블리 매니페스트의 파일 테이블에 있는 파일을 가져옵니다. (다음에서 상속됨 AssemblyBuilder) |
| GetForwardedTypes() |
어셈블리를 디스크 또는 스트림에 유지할 수 있는 AssemblyBuilder 구현을 제공합니다. (다음에서 상속됨 Assembly) |
| GetHashCode() |
이 인스턴스의 해시 코드를 반환합니다. (다음에서 상속됨 AssemblyBuilder) |
| GetLoadedModules() |
이 어셈블리의 일부인 로드된 모듈을 모두 가져옵니다. (다음에서 상속됨 Assembly) |
| GetLoadedModules(Boolean) |
이 어셈블리의 일부인 로드된 모든 모듈을 반환하고 필요에 따라 리소스 모듈을 포함합니다. (다음에서 상속됨 AssemblyBuilder) |
| GetManifestResourceInfo(String) |
지정된 리소스가 유지되는 방법에 대한 정보를 반환합니다. (다음에서 상속됨 AssemblyBuilder) |
| GetManifestResourceNames() |
이 어셈블리에서 지정된 매니페스트 리소스를 로드합니다. (다음에서 상속됨 AssemblyBuilder) |
| GetManifestResourceStream(String) |
이 어셈블리에서 지정된 매니페스트 리소스를 로드합니다. (다음에서 상속됨 AssemblyBuilder) |
| GetManifestResourceStream(Type, String) |
지정된 형식의 네임스페이스로 범위가 지정된 매니페스트 리소스를 이 어셈블리에서 로드합니다. (다음에서 상속됨 AssemblyBuilder) |
| GetModule(String) |
이 어셈블리에서 지정된 모듈을 가져옵니다. (다음에서 상속됨 AssemblyBuilder) |
| GetModules() |
이 어셈블리의 일부인 모든 모듈을 가져옵니다. (다음에서 상속됨 Assembly) |
| GetModules(Boolean) |
이 어셈블리의 일부인 모든 모듈을 가져오고 필요에 따라 리소스 모듈을 포함합니다. (다음에서 상속됨 AssemblyBuilder) |
| GetName() |
이 어셈블리에 대한 항목을 AssemblyName 가져옵니다. (다음에서 상속됨 Assembly) |
| GetName(Boolean) |
AssemblyName 현재 동적 어셈블리를 만들 때 지정한 값을 가져옵니다. |
| GetObjectData(SerializationInfo, StreamingContext) |
사용되지 않음.
이 어셈블리를 다시 검증하는 데 필요한 모든 데이터를 사용하여 serialization 정보를 가져옵니다. (다음에서 상속됨 Assembly) |
| GetReferencedAssemblies() |
이 AssemblyName항목에서 참조하는 어셈블리에 대한 불완전한 개체 목록을 AssemblyBuilder 가져옵니다. (다음에서 상속됨 AssemblyBuilder) |
| GetSatelliteAssembly(CultureInfo, Version) |
지정된 문화권에 대한 위성 어셈블리의 지정된 버전을 가져옵니다. (다음에서 상속됨 AssemblyBuilder) |
| GetSatelliteAssembly(CultureInfo) |
지정된 문화권의 위성 어셈블리를 가져옵니다. (다음에서 상속됨 AssemblyBuilder) |
| GetType(String, Boolean, Boolean) |
현재 AssemblyBuilder에서 정의되고 만들어진 형식에서 지정된 형식을 가져옵니다. (다음에서 상속됨 AssemblyBuilder) |
| GetType(String, Boolean) |
Type 어셈블리 인스턴스에서 지정된 이름을 가진 개체를 가져오고 형식을 찾을 수 없는 경우 필요에 따라 예외를 throw합니다. (다음에서 상속됨 Assembly) |
| GetType(String) |
Type 어셈블리 인스턴스에서 지정된 이름을 가진 개체를 가져옵니다. (다음에서 상속됨 Assembly) |
| GetTypes() |
이 어셈블리에 정의된 모든 형식을 가져옵니다. (다음에서 상속됨 Assembly) |
| IsDefined(Type, Boolean) |
지정된 특성 형식의 하나 이상의 인스턴스가 이 멤버에 적용되는지 여부를 나타내는 값을 반환합니다. (다음에서 상속됨 AssemblyBuilder) |
| LoadModule(String, Byte[], Byte[]) |
내보낸 모듈 또는 리소스 파일을 포함하는 COFF(공용 개체 파일 형식) 기반 이미지를 사용하여 이 어셈블리 내부 모듈을 로드합니다. 모듈의 기호를 나타내는 원시 바이트도 로드됩니다. (다음에서 상속됨 Assembly) |
| LoadModule(String, Byte[]) |
내보낸 모듈 또는 리소스 파일을 포함하는 COFF(공용 개체 파일 형식) 기반 이미지를 사용하여 이 어셈블리 내부 모듈을 로드합니다. (다음에서 상속됨 Assembly) |
| MemberwiseClone() |
현재 Object단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
| Save(Stream) |
어셈블리를 지정된 스트림으로 직렬화합니다. |
| Save(String) |
어셈블리를 디스크에 저장합니다. |
| SetCustomAttribute(ConstructorInfo, Byte[]) |
지정된 사용자 지정 특성 Blob을 사용하여 이 어셈블리에서 사용자 지정 특성을 설정합니다. (다음에서 상속됨 AssemblyBuilder) |
| SetCustomAttribute(CustomAttributeBuilder) |
사용자 지정 특성 작성기를 사용하여 이 어셈블리에서 사용자 지정 특성을 설정합니다. (다음에서 상속됨 AssemblyBuilder) |
| SetCustomAttributeCore(ConstructorInfo, ReadOnlySpan<Byte>) |
파생 클래스에서 재정의되는 경우 이 어셈블리에서 사용자 지정 특성을 설정합니다. (다음에서 상속됨 AssemblyBuilder) |
| ToString() |
표시 이름이라고도 하는 어셈블리의 전체 이름을 반환합니다. (다음에서 상속됨 Assembly) |
이벤트
| Name | Description |
|---|---|
| ModuleResolve |
공용 언어 런타임 클래스 로더가 일반 수단을 통해 어셈블리의 내부 모듈에 대한 참조를 확인할 수 없는 경우에 발생합니다. (다음에서 상속됨 Assembly) |
확장명 메서드
| Name | Description |
|---|---|
| GetCustomAttribute(Assembly, Type) |
지정된 어셈블리에 적용되는 지정된 형식의 사용자 지정 특성을 검색합니다. |
| GetCustomAttribute<T>(Assembly) |
지정된 어셈블리에 적용되는 지정된 형식의 사용자 지정 특성을 검색합니다. |
| GetCustomAttributes(Assembly, Type) |
지정된 어셈블리에 적용되는 지정된 형식의 사용자 지정 특성 컬렉션을 검색합니다. |
| GetCustomAttributes(Assembly) |
지정된 어셈블리에 적용되는 사용자 지정 특성의 컬렉션을 검색합니다. |
| GetCustomAttributes<T>(Assembly) |
지정된 어셈블리에 적용되는 지정된 형식의 사용자 지정 특성 컬렉션을 검색합니다. |
| GetExportedTypes(Assembly) |
어셈블리를 디스크 또는 스트림에 유지할 수 있는 AssemblyBuilder 구현을 제공합니다. |
| GetModules(Assembly) |
어셈블리를 디스크 또는 스트림에 유지할 수 있는 AssemblyBuilder 구현을 제공합니다. |
| GetTypes(Assembly) |
어셈블리를 디스크 또는 스트림에 유지할 수 있는 AssemblyBuilder 구현을 제공합니다. |
| IsDefined(Assembly, Type) |
지정된 형식의 사용자 지정 특성이 지정된 어셈블리에 적용되는지 여부를 나타냅니다. |
| TryGetRawMetadata(Assembly, Byte*, Int32) |
에 사용할 MetadataReader어셈블리의 메타데이터 섹션을 검색합니다. |