PersistedAssemblyBuilder Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Tillhandahåller en AssemblyBuilder-implementering som kan bevara en sammansättning till en disk eller dataström.
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
- Arv
Kommentarer
Det AssemblyBuilder.Save API:et portades inte ursprungligen till .NET (Core) eftersom implementeringen var starkt beroende av Windows-specifik intern kod som inte heller portades. .NET 9 har lagt till PersistedAssemblyBuilder klassen, vilket ger en fullständigt hanterad Reflection.Emit implementering som stöder sparande. Den här implementeringen är inte beroende av den befintliga, körningsspecifika Reflection.Emit implementeringen. Det betyder att det nu finns två olika implementeringar i .NET: runnable och persisted. Om du vill köra den beständiga sammansättningen sparar du den först i en minnesström eller en fil och läser sedan in den igen.
Innan PersistedAssemblyBuilderkunde du bara köra en genererad sammansättning och inte spara den. Eftersom sammansättningen endast var minnesintern var det svårt att felsöka. Fördelarna med att spara en dynamisk sammansättning i en fil är:
- Du kan verifiera den genererade sammansättningen med verktyg som ILVerify eller dekompilera och manuellt undersöka den med verktyg som ILSpy.
- Den sparade sammansättningen kan läsas in direkt, utan att behöva kompilera igen, vilket kan minska programmets starttid.
Om du vill skapa en PersistedAssemblyBuilder instans använder du PersistedAssemblyBuilder(AssemblyName, Assembly, IEnumerable<CustomAttributeBuilder>) konstruktorn. Parametern coreAssembly används för att lösa bas-körningstyper och kan användas för att lösa versionshantering av referenssamlingar.
Om
Reflection.Emitanvänds för att generera ett assembly som endast kommer att köras på samma körningsversion som den körningsversion som kompilatorn körs på (vanligtvis på plats), kan kärnassemblyt enkelt varatypeof(object).Assembly. I följande exempel visas hur du skapar och sparar en assembly i en dataström och kör den med den nuvarande runtime-assemblyn.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])); }Om
Reflection.Emitanvänds för att generera en sammansättning som riktar sig mot en specifik TFM öppnar du referenssammansättningarna för den angivna TFM:en med hjälp avMetadataLoadContextoch använder värdet för egenskapen MetadataLoadContext.CoreAssembly förcoreAssembly. Med det här värdet kan generatorn köras på en .NET-körningsversion och rikta in sig på en annan .NET-körningsversion. Du bör använda typer som returneras av denMetadataLoadContextinstansen när du refererar till kärntyper. Till exempel, istället förtypeof(int), sök uppSystem.Int32-typen iMetadataLoadContext.CoreAssemblymed namnet: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 }
Ange startpunkt för en körbar fil
Om du vill ange startpunkten för en körbar fil eller ange andra alternativ för sammansättningsfilen kan du anropa metoden public MetadataBuilder GenerateMetadata(out BlobBuilder ilStream, out BlobBuilder mappedFieldData) och använda ifyllda metadata för att generera sammansättningen med önskade alternativ, till exempel:
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);
}
Avge symboler och generera PDB
Symbolmetadata fylls i i parametern pdbBuilder out när du anropar metoden GenerateMetadata(BlobBuilder, BlobBuilder) på en PersistedAssemblyBuilder-instans. Så här skapar du en sammansättning med ett portabelt PDB:
- Skapa ISymbolDocumentWriter instanser med metoden ModuleBuilder.DefineDocument(String, Guid, Guid, Guid). När du sänder ut metodens IL genererar du även motsvarande symbolinformation.
- Skapa en PortablePdbBuilder-instans med hjälp av den
pdbBuilderinstans som skapas av metoden GenerateMetadata(BlobBuilder, BlobBuilder). - Serialisera
PortablePdbBuildertill en Bloboch skrivBlobtill en PDB-filström (endast om du genererar en fristående PDB). - Skapa en DebugDirectoryBuilder-instans och lägg till en DebugDirectoryBuilder.AddCodeViewEntry (fristående PDB) eller DebugDirectoryBuilder.AddEmbeddedPortablePdbEntry.
- Ange det valfria argumentet
debugDirectoryBuildernär du skapar PEBuilder-instansen.
I följande exempel visas hur du genererar symbolinformation och genererar en PDB-fil.
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;
}
Dessutom kan du lägga till CustomDebugInformation genom att anropa metoden MetadataBuilder.AddCustomDebugInformation(EntityHandle, GuidHandle, BlobHandle) från pdbBuilder-instansen för att lägga till källinbäddning och källindexering av avancerad PDB-information.
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));
}
Lägga till resurser med PersistedAssemblyBuilder
Du kan anropa MetadataBuilder.AddManifestResource(ManifestResourceAttributes, StringHandle, EntityHandle, UInt32) för att lägga till så många resurser som behövs. Strömmarna måste sammanfogas till en BlobBuilder som du skickar in i argumentet ManagedPEBuilder. I följande exempel visas hur du skapar resurser och kopplar dem till den sammansättning som skapas.
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);
}
I följande exempel visas hur du läser resurser från den skapade sammansättningen.
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}");
}
}
Note
Metadatatoken för alla medlemmar fylls i under operationen Save. Använd inte token för en genererad typ och dess medlemmar innan du sparar dem, eftersom de har standardvärden eller utlöser undantag. Det är säkert att använda token för typer som refereras, inte genereras.
Vissa API:er som inte är viktiga för att generera en sammansättning implementeras inte. GetCustomAttributes() implementeras till exempel inte. Med körningsimplementeringen kunde du använda dessa API:er efter att du hade skapat typen. För den beständiga AssemblyBuilderkastar de NotSupportedException eller NotImplementedException. Om du har ett scenario som kräver dessa API:er kan du ange ett problem i dotnet/runtime-lagringsplatsen.
Ett alternativt sätt att generera sammansättningsfiler finns i MetadataBuilder.
Varning
PersistedAssemblyBuilder API:er kräver en fullständigt betrodd miljö med betrodda indata, liknande andra tekniker som kompilatorer. Det finns inga andra begränsningar än grundläggande validering för genererad IL som AssemblyBuilder kan innehålla. Det inkluderar validering för medlemsnamn, antal och associerade metadata, till exempel anpassade attribut.
Konstruktorer
| Name | Description |
|---|---|
| PersistedAssemblyBuilder(AssemblyName, Assembly, IEnumerable<CustomAttributeBuilder>) |
Skapar en PersistedAssemblyBuilder instans som kan sparas i en fil eller dataström. |
Egenskaper
| Name | Description |
|---|---|
| CodeBase |
Föråldrad.
Hämtar sammansättningens plats enligt vad som angavs ursprungligen (till exempel i ett AssemblyName objekt). (Ärvd från AssemblyBuilder) |
| CustomAttributes |
Hämtar en samling som innehåller den här sammansättningens anpassade attribut. (Ärvd från Assembly) |
| EntryPoint |
Returnerar startpunkten för den här sammansättningen. (Ärvd från AssemblyBuilder) |
| EscapedCodeBase |
Föråldrad.
Föråldrad.
Hämtar den URI, inklusive escape-tecken, som representerar kodbasen. (Ärvd från Assembly) |
| ExportedTypes |
Hämtar en samling offentliga typer som definierats i den här sammansättningen som visas utanför sammansättningen. (Ärvd från Assembly) |
| FullName |
Hämtar visningsnamnet för den aktuella dynamiska sammansättningen. |
| HostContext |
Hämtar värdkontexten där den dynamiska sammansättningen skapas. (Ärvd från AssemblyBuilder) |
| IsCollectible |
Hämtar ett värde som anger om den här dynamiska sammansättningen lagras i en samlarbar AssemblyLoadContext. (Ärvd från AssemblyBuilder) |
| IsDynamic |
Hämtar ett värde som anger att den aktuella sammansättningen är en dynamisk sammansättning. (Ärvd från AssemblyBuilder) |
| IsFullyTrusted |
Hämtar ett värde som anger om den aktuella sammansättningen läses in med fullständigt förtroende. (Ärvd från Assembly) |
| Location |
Hämtar platsen i kodbasformat för den inlästa filen som innehåller manifestet om den inte är skuggkopierad. (Ärvd från AssemblyBuilder) |
| ManifestModule |
Hämtar modulen i den aktuella PersistedAssemblyBuilder som innehåller sammansättningsmanifestet. |
| ReflectionOnly |
Hämtar ett värde som anger om den dynamiska sammansättningen finns i kontexten endast reflektion. (Ärvd från AssemblyBuilder) |
Metoder
| Name | Description |
|---|---|
| CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Letar upp den angivna typen från den här sammansättningen och skapar en instans av den med hjälp av systemaktivatorn, med valfri skiftlägeskänslig sökning och med angiven kultur, argument och bindnings- och aktiveringsattribut. (Ärvd från Assembly) |
| CreateInstance(String, Boolean) |
Letar upp den angivna typen från den här sammansättningen och skapar en instans av den med hjälp av systemaktivatorn, med valfri skiftlägeskänslig sökning. (Ärvd från Assembly) |
| CreateInstance(String) |
Letar upp den angivna typen från den här sammansättningen och skapar en instans av den med hjälp av systemaktivatorn med hjälp av skiftlägeskänslig sökning. (Ärvd från Assembly) |
| DefineDynamicModule(String) |
Definierar en namngiven tillfällig dynamisk modul i den här sammansättningen. (Ärvd från AssemblyBuilder) |
| DefineDynamicModuleCore(String) |
När den åsidosättas i en härledd klass definierar en dynamisk modul i den här sammansättningen. (Ärvd från AssemblyBuilder) |
| Equals(Object) |
Returnerar ett värde som anger om den här instansen är lika med det angivna objektet. (Ärvd från AssemblyBuilder) |
| GenerateMetadata(BlobBuilder, BlobBuilder, MetadataBuilder) |
Genererar metadata för PersistedAssemblyBuilder. |
| GenerateMetadata(BlobBuilder, BlobBuilder) |
Genererar metadata för PersistedAssemblyBuilder. |
| GetCustomAttributes(Boolean) |
Returnerar alla anpassade attribut som har tillämpats på den aktuella AssemblyBuilder. (Ärvd från AssemblyBuilder) |
| GetCustomAttributes(Type, Boolean) |
Returnerar alla anpassade attribut som har tillämpats på den aktuella AssemblyBuilder, och som härleds från en angiven attributtyp. (Ärvd från AssemblyBuilder) |
| GetCustomAttributesData() |
Returnerar CustomAttributeData objekt som innehåller information om de attribut som har tillämpats på den aktuella AssemblyBuilder. (Ärvd från AssemblyBuilder) |
| GetDynamicModule(String) |
Returnerar den dynamiska modulen med det angivna namnet. (Ärvd från AssemblyBuilder) |
| GetDynamicModuleCore(String) |
När den åsidosättas i en härledd klass returnerar den dynamiska modulen med det angivna namnet. (Ärvd från AssemblyBuilder) |
| GetExportedTypes() |
Hämtar de exporterade typerna som definierats i den här sammansättningen. (Ärvd från AssemblyBuilder) |
| GetFile(String) |
Hämtar en FileStream för den angivna filen i filtabellen i manifestet för den här sammansättningen. (Ärvd från AssemblyBuilder) |
| GetFiles() |
Hämtar filerna i filtabellen i ett sammansättningsmanifest. (Ärvd från Assembly) |
| GetFiles(Boolean) |
Hämtar filerna i filtabellen i ett sammansättningsmanifest och anger om resursmoduler ska inkluderas. (Ärvd från AssemblyBuilder) |
| GetForwardedTypes() |
Tillhandahåller en AssemblyBuilder-implementering som kan bevara en sammansättning till en disk eller dataström. (Ärvd från Assembly) |
| GetHashCode() |
Returnerar hash-koden för den här instansen. (Ärvd från AssemblyBuilder) |
| GetLoadedModules() |
Hämtar alla inlästa moduler som ingår i den här sammansättningen. (Ärvd från Assembly) |
| GetLoadedModules(Boolean) |
Returnerar alla inlästa moduler som ingår i den här sammansättningen och kan även innehålla resursmoduler. (Ärvd från AssemblyBuilder) |
| GetManifestResourceInfo(String) |
Returnerar information om hur den angivna resursen har sparats. (Ärvd från AssemblyBuilder) |
| GetManifestResourceNames() |
Läser in den angivna manifestresursen från den här sammansättningen. (Ärvd från AssemblyBuilder) |
| GetManifestResourceStream(String) |
Läser in den angivna manifestresursen från den här sammansättningen. (Ärvd från AssemblyBuilder) |
| GetManifestResourceStream(Type, String) |
Läser in den angivna manifestresursen, som begränsas av namnområdet för den angivna typen, från den här sammansättningen. (Ärvd från AssemblyBuilder) |
| GetModule(String) |
Hämtar den angivna modulen i den här sammansättningen. (Ärvd från AssemblyBuilder) |
| GetModules() |
Hämtar alla moduler som ingår i den här sammansättningen. (Ärvd från Assembly) |
| GetModules(Boolean) |
Hämtar alla moduler som ingår i den här sammansättningen och kan även innehålla resursmoduler. (Ärvd från AssemblyBuilder) |
| GetName() |
Hämtar en AssemblyName för den här sammansättningen. (Ärvd från Assembly) |
| GetName(Boolean) |
Hämtar det AssemblyName som angavs när den aktuella dynamiska sammansättningen skapades. |
| GetObjectData(SerializationInfo, StreamingContext) |
Föråldrad.
Hämtar serialiseringsinformation med alla data som behövs för att återskapa den här sammansättningen. (Ärvd från Assembly) |
| GetReferencedAssemblies() |
Hämtar en ofullständig lista över AssemblyName objekt för de sammansättningar som refereras till av den här AssemblyBuilder. (Ärvd från AssemblyBuilder) |
| GetSatelliteAssembly(CultureInfo, Version) |
Hämtar den angivna versionen av satellitsammansättningen för den angivna kulturen. (Ärvd från AssemblyBuilder) |
| GetSatelliteAssembly(CultureInfo) |
Hämtar satellitsammansättningen för den angivna kulturen. (Ärvd från AssemblyBuilder) |
| GetType(String, Boolean, Boolean) |
Hämtar den angivna typen från de typer som har definierats och skapats i den aktuella AssemblyBuilder. (Ärvd från AssemblyBuilder) |
| GetType(String, Boolean) |
Type Hämtar objektet med det angivna namnet i sammansättningsinstansen och genererar eventuellt ett undantag om typen inte hittas. (Ärvd från Assembly) |
| GetType(String) |
Type Hämtar objektet med det angivna namnet i sammansättningsinstansen. (Ärvd från Assembly) |
| GetTypes() |
Hämtar alla typer som definierats i den här sammansättningen. (Ärvd från Assembly) |
| IsDefined(Type, Boolean) |
Returnerar ett värde som anger om en eller flera instanser av den angivna attributtypen tillämpas på den här medlemmen. (Ärvd från AssemblyBuilder) |
| LoadModule(String, Byte[], Byte[]) |
Läser in modulen, som är intern för den här sammansättningen, med en COFF-baserad bild (Common Object File Format) som innehåller en genererad modul eller en resursfil. De råa byte som representerar symbolerna för modulen läses också in. (Ärvd från Assembly) |
| LoadModule(String, Byte[]) |
Läser in modulen, som är intern för den här sammansättningen, med en COFF-baserad bild (Common Object File Format) som innehåller en genererad modul eller en resursfil. (Ärvd från Assembly) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| Save(Stream) |
Serialiserar sammansättningen till den angivna strömmen. |
| Save(String) |
Sparar sammansättningen på disken. |
| SetCustomAttribute(ConstructorInfo, Byte[]) |
Ange ett anpassat attribut för den här sammansättningen med en angiven anpassad attributblob. (Ärvd från AssemblyBuilder) |
| SetCustomAttribute(CustomAttributeBuilder) |
Ange ett anpassat attribut för den här sammansättningen med hjälp av en anpassad attributbyggare. (Ärvd från AssemblyBuilder) |
| SetCustomAttributeCore(ConstructorInfo, ReadOnlySpan<Byte>) |
När det åsidosätts i en härledd klass anger du ett anpassat attribut för den här sammansättningen. (Ärvd från AssemblyBuilder) |
| ToString() |
Returnerar det fullständiga namnet på sammansättningen, även kallat visningsnamn. (Ärvd från Assembly) |
Händelser
| Name | Description |
|---|---|
| ModuleResolve |
Inträffar när common language runtime-klassinläsaren inte kan matcha en referens till en intern modul i en sammansättning på normalt sätt. (Ärvd från Assembly) |
Tilläggsmetoder
| Name | Description |
|---|---|
| GetCustomAttribute(Assembly, Type) |
Hämtar ett anpassat attribut av en angiven typ som tillämpas på en angiven sammansättning. |
| GetCustomAttribute<T>(Assembly) |
Hämtar ett anpassat attribut av en angiven typ som tillämpas på en angiven sammansättning. |
| GetCustomAttributes(Assembly, Type) |
Hämtar en samling anpassade attribut av en angiven typ som tillämpas på en angiven sammansättning. |
| GetCustomAttributes(Assembly) |
Hämtar en samling anpassade attribut som tillämpas på en angiven sammansättning. |
| GetCustomAttributes<T>(Assembly) |
Hämtar en samling anpassade attribut av en angiven typ som tillämpas på en angiven sammansättning. |
| GetExportedTypes(Assembly) |
Tillhandahåller en AssemblyBuilder-implementering som kan bevara en sammansättning till en disk eller dataström. |
| GetModules(Assembly) |
Tillhandahåller en AssemblyBuilder-implementering som kan bevara en sammansättning till en disk eller dataström. |
| GetTypes(Assembly) |
Tillhandahåller en AssemblyBuilder-implementering som kan bevara en sammansättning till en disk eller dataström. |
| IsDefined(Assembly, Type) |
Anger om anpassade attribut av en angiven typ tillämpas på en angiven sammansättning. |
| TryGetRawMetadata(Assembly, Byte*, Int32) |
Hämtar metadataavsnittet i sammansättningen för användning med MetadataReader. |