PersistedAssemblyBuilder Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt eine AssemblyBuilder-Implementierung bereit, die eine Assembly auf einem Datenträger oder Stream speichern kann.
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
- Vererbung
Hinweise
Die AssemblyBuilder.Save-API wurde ursprünglich nicht zu .NET (Core) portiert, da die Implementierung stark von windowsspezifischem systemeigenem Code abhängt, der ebenfalls nicht portiert wurde. .NET 9 hat die PersistedAssemblyBuilder Klasse hinzugefügt, die eine vollständig verwaltete Reflection.Emit Implementierung bereitstellt, die das Speichern unterstützt. Diese Implementierung hat keine Abhängigkeit von der bereits vorhandenen, laufzeitspezifischen Reflection.Emit Implementierung. Das heißt, jetzt gibt es zwei verschiedene Implementierungen in .NET: runnable and persisted. Wenn Sie die persistierte Assembly ausführen möchten, speichern Sie sie zuerst in einem Speicherstrom oder einer Datei, dann laden Sie sie wieder.
Vor PersistedAssemblyBuilderkonnten Sie nur eine generierte Assembly ausführen und nicht speichern. Da die Assembly nur im Arbeitsspeicher war, war es schwierig zu debuggen. Vorteile des Speicherns einer dynamischen Assembly in einer Datei sind:
- Sie können die generierte Assembly mit Tools wie ILVerify überprüfen oder dekompilieren und manuell mit Tools wie ILSpy untersuchen.
- Die gespeicherte Assembly kann direkt geladen werden, ohne erneut kompilieren zu müssen, wodurch die Startzeit der Anwendung verringert werden kann.
Verwenden Sie den PersistedAssemblyBuilder-Konstruktor, um eine PersistedAssemblyBuilder(AssemblyName, Assembly, IEnumerable<CustomAttributeBuilder>) Instanz zu erstellen. DercoreAssembly-Parameter wird zur Auflösung von Basis-Laufzeittypen verwendet und kann zur Auflösung von Referenz-Assembly-Versionen verwendet werden:
Wenn
Reflection.Emitverwendet wird, um eine Assembly zu erzeugen, die nur auf derselben Laufzeitversion ausgeführt wird wie die Laufzeitversion, auf der der Compiler läuft (typischerweise in-proc), kann die Core-Assembly einfach seintypeof(object).Assembly. Das folgende Beispiel zeigt, wie eine Baugruppe erstellt und in einem Stream gespeichert und mit der aktuellen Laufzeitbaugruppe ausgeführt wird: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])); }Wenn
Reflection.Emitverwendet wird, um eine Assembly zu generieren, die auf ein bestimmtes TFM abzielt, öffnen Sie die Referenz-Assemblies für das angegebene TFM mitMetadataLoadContextund verwenden Sie den Wert der Eigenschaft MetadataLoadContext.CoreAssemblyfürcoreAssembly. Mit diesem Wert kann der Generator auf einer .NET-Laufzeitversion ausgeführt und auf eine andere .NET-Laufzeitversion ausgerichtet werden. Sie sollten Typen verwenden, die von derMetadataLoadContextInstanz beim Verweisen auf Kerntypen zurückgegeben werden. Zum Beispiel, statttypeof(int), finden Sie dieSystem.Int32inMetadataLoadContext.CoreAssemblynach Namen: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 }
Einstiegspunkt für eine ausführbare Datei festlegen
Um den Einstiegspunkt für eine ausführbare Datei festzulegen oder andere Optionen für die Assemblydatei festzulegen, können Sie die public MetadataBuilder GenerateMetadata(out BlobBuilder ilStream, out BlobBuilder mappedFieldData)-Methode aufrufen und die aufgefüllten Metadaten verwenden, um die Assembly mit den gewünschten Optionen zu generieren, z. B.:
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);
}
Symbole ausgeben und PDB generieren
Die Metadaten der Symbole werden in den pdbBuilderout-Parameter eingetragen, wenn Sie dieGenerateMetadata(BlobBuilder, BlobBuilder)-Methode für einePersistedAssemblyBuilder-Instanz aufrufen. So erstellen Sie eine Baugruppe mit einer portablen PDB:
- Erstellen SieISymbolDocumentWriter Instanzen mit derModuleBuilder.DefineDocument(String, Guid, Guid, Guid) Methode. Bei der Ausgabe der AWL der Methode werden auch die entsprechenden Symbolinformationen ausgegeben.
- Erstellen Sie eine PortablePdbBuilder-Instanz unter Verwendung der durch die
pdbBuilder-Methode erzeugten GenerateMetadata(BlobBuilder, BlobBuilder)-Instanz. - Serialisieren Sie die
PortablePdbBuilderin eineBlob, und schreiben Sie dieBlobin einen PDB-Dateistrom (nur wenn Sie eine eigenständige PDB erzeugen). - Erstellen Sie eineDebugDirectoryBuilder-Instanz und fügen Sie eineDebugDirectoryBuilder.AddCodeViewEntry(eigenständige PDB) oder DebugDirectoryBuilder.AddEmbeddedPortablePdbEntryhinzu.
- Legen Sie das optionale
debugDirectoryBuilder-Argument fest, wenn Sie die PEBuilder-Instanz erstellen.
Das folgende Beispiel zeigt, wie Symbolinformationen ausgegeben und eine PDB-Datei generiert werden.
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;
}
Außerdem können SieCustomDebugInformationhinzufügen, indem Sie die MetadataBuilder.AddCustomDebugInformation(EntityHandle, GuidHandle, BlobHandle)-Methode von der pdbBuilder-Instanz aufrufen, um erweiterte PDB-Informationen zur Quelleneinbettung und Quellenindizierung hinzuzufügen.
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));
}
Hinzufügen von Ressourcen mit PersistedAssemblyBuilder
Sie können MetadataBuilder.AddManifestResource(ManifestResourceAttributes, StringHandle, EntityHandle, UInt32) aufrufen, um beliebig viele Ressourcen hinzuzufügen. Die Datenströme müssen zu einem BlobBuilderverkettet werden, das Sie an das ManagedPEBuilder-Argument übergeben. Das folgende Beispiel zeigt, wie Sie Ressourcen erstellen und an die erstellte Assembly anfügen.
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);
}
Das folgende Beispiel zeigt, wie Ressourcen aus der erstellten Assembly gelesen werden.
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
Die Metadaten-Token für alle Mitglieder werden bei der Operation Saveausgefüllt. Verwenden Sie die Token eines generierten Typs und seine Mitglieder nicht vor dem Speichern, da sie Standardwerte haben oder Ausnahmen auslösen. Es ist sicher, Token für Typen zu verwenden, die referenziert und nicht generiert werden.
Einige APIs, die für das Emittieren einer Assembly nicht wichtig sind, werden nicht implementiert. beispielsweise wird GetCustomAttributes() nicht implementiert. Mit der Laufzeitimplementierung konnten Sie diese APIs nach dem Erstellen des Typs verwenden. Für die anhaltendeAssemblyBuilder, werfen sie NotSupportedExceptionoderNotImplementedException. Wenn Sie ein Szenario haben, das diese APIs erfordert, melden Sie ein Problem im Repository dotnet/runtime.
Eine alternative Möglichkeit zum Generieren von Assemblydateien finden Sie unter MetadataBuilder.
Warning
PersistedAssemblyBuilder APIs erfordern eine vollständig vertrauenswürdige Umgebung mit vertrauenswürdiger Eingabe, ähnlich wie andere Technologien wie Compiler. Es gibt keine anderen Einschränkungen als die grundlegende Überprüfung für generierte IL, die enthalten AssemblyBuilder kann. Dies umfasst die Überprüfung für Membername, Anzahl und zugeordnete Metadaten, z. B. benutzerdefinierte Attribute.
Konstruktoren
| Name | Beschreibung |
|---|---|
| PersistedAssemblyBuilder(AssemblyName, Assembly, IEnumerable<CustomAttributeBuilder>) |
Erstellt eine PersistedAssemblyBuilder Instanz, die in einer Datei oder einem Datenstrom gespeichert werden kann. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| CodeBase |
Veraltet.
Ruft die Position der Assembly ab, wie ursprünglich angegeben (z. B. in einem AssemblyName Objekt). (Geerbt von AssemblyBuilder) |
| CustomAttributes |
Ruft eine Auflistung ab, die die benutzerdefinierten Attribute dieser Assembly enthält. (Geerbt von Assembly) |
| EntryPoint |
Gibt den Einstiegspunkt dieser Assembly zurück. (Geerbt von AssemblyBuilder) |
| EscapedCodeBase |
Veraltet.
Veraltet.
Ruft den URI ab, einschließlich Escapezeichen, die die Codebasis darstellt. (Geerbt von Assembly) |
| ExportedTypes |
Ruft eine Auflistung der öffentlichen Typen ab, die in dieser Assembly definiert sind, die außerhalb der Assembly sichtbar sind. (Geerbt von Assembly) |
| FullName |
Ruft den Anzeigenamen der aktuellen dynamischen Assembly ab. |
| HostContext |
Ruft den Hostkontext ab, in dem die dynamische Assembly erstellt wird. (Geerbt von AssemblyBuilder) |
| IsCollectible |
Ruft einen Wert ab, der angibt, ob diese dynamische Assembly in einem Sammelfeld AssemblyLoadContextgespeichert wird. (Geerbt von AssemblyBuilder) |
| IsDynamic |
Ruft einen Wert ab, der angibt, dass die aktuelle Assembly eine dynamische Assembly ist. (Geerbt von AssemblyBuilder) |
| IsFullyTrusted |
Ruft einen Wert ab, der angibt, ob die aktuelle Assembly mit voller Vertrauenswürdigkeit geladen wird. (Geerbt von Assembly) |
| Location |
Ruft den Speicherort im Codebasisformat der geladenen Datei ab, die das Manifest enthält, wenn sie nicht schattenkopiert ist. (Geerbt von AssemblyBuilder) |
| ManifestModule |
Ruft das Modul im aktuellen PersistedAssemblyBuilder , das das Assemblymanifest enthält. |
| ReflectionOnly |
Ruft einen Wert ab, der angibt, ob sich die dynamische Assembly im reinen Spiegelungskontext befindet. (Geerbt von AssemblyBuilder) |
Methoden
| Name | Beschreibung |
|---|---|
| CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Sucht den angegebenen Typ aus dieser Assembly und erstellt eine Instanz davon mithilfe des Systemaktivators, bei der bei optionaler Suche nach Groß-/Kleinschreibung die angegebene Kultur, Argumente und Bindungs- und Aktivierungsattribute vorhanden sind. (Geerbt von Assembly) |
| CreateInstance(String, Boolean) |
Sucht den angegebenen Typ aus dieser Assembly und erstellt eine Instanz davon mithilfe des Systemaktivators, bei der bei optionaler Suche nach Groß-/Kleinschreibung unterschieden wird. (Geerbt von Assembly) |
| CreateInstance(String) |
Sucht den angegebenen Typ aus dieser Assembly und erstellt eine Instanz dieses Typs mithilfe des Systemaktivators unter Verwendung der Suche nach Groß-/Kleinschreibung. (Geerbt von Assembly) |
| DefineDynamicModule(String) |
Definiert ein benanntes vorübergehendes dynamisches Modul in dieser Assembly. (Geerbt von AssemblyBuilder) |
| DefineDynamicModuleCore(String) |
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird ein dynamisches Modul in dieser Assembly definiert. (Geerbt von AssemblyBuilder) |
| Equals(Object) |
Gibt einen Wert zurück, der angibt, ob diese Instanz dem angegebenen Objekt entspricht. (Geerbt von AssemblyBuilder) |
| GenerateMetadata(BlobBuilder, BlobBuilder, MetadataBuilder) |
Generiert die Metadaten für die PersistedAssemblyBuilder. |
| GenerateMetadata(BlobBuilder, BlobBuilder) |
Generiert die Metadaten für die PersistedAssemblyBuilder. |
| GetCustomAttributes(Boolean) |
Gibt alle benutzerdefinierten Attribute zurück, die auf das aktuelle AssemblyBuilderAttribut angewendet wurden. (Geerbt von AssemblyBuilder) |
| GetCustomAttributes(Type, Boolean) |
Gibt alle benutzerdefinierten Attribute zurück, die auf den aktuellen AssemblyBuilderAttributtyp angewendet wurden und von einem angegebenen Attributtyp abgeleitet sind. (Geerbt von AssemblyBuilder) |
| GetCustomAttributesData() |
Gibt CustomAttributeData Objekte zurück, die Informationen zu den Attributen enthalten, die auf den aktuellen AssemblyBuilderWert angewendet wurden. (Geerbt von AssemblyBuilder) |
| GetDynamicModule(String) |
Gibt das dynamische Modul mit dem angegebenen Namen zurück. (Geerbt von AssemblyBuilder) |
| GetDynamicModuleCore(String) |
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird das dynamische Modul mit dem angegebenen Namen zurückgegeben. (Geerbt von AssemblyBuilder) |
| GetExportedTypes() |
Ruft die exportierten Typen ab, die in dieser Assembly definiert sind. (Geerbt von AssemblyBuilder) |
| GetFile(String) |
Ruft eine FileStream für die angegebene Datei in der Dateitabelle des Manifests dieser Assembly ab. (Geerbt von AssemblyBuilder) |
| GetFiles() |
Ruft die Dateien in der Dateitabelle eines Assemblymanifests ab. (Geerbt von Assembly) |
| GetFiles(Boolean) |
Ruft die Dateien in der Dateitabelle eines Assemblymanifests ab, die angibt, ob Ressourcenmodule eingeschlossen werden sollen. (Geerbt von AssemblyBuilder) |
| GetForwardedTypes() |
Stellt eine AssemblyBuilder-Implementierung bereit, die eine Assembly auf einem Datenträger oder Stream speichern kann. (Geerbt von Assembly) |
| GetHashCode() |
Gibt den Hashcode für diesen instance zurück. (Geerbt von AssemblyBuilder) |
| GetLoadedModules() |
Ruft alle geladenen Module ab, die Teil dieser Assembly sind. (Geerbt von Assembly) |
| GetLoadedModules(Boolean) |
Gibt alle geladenen Module zurück, die Teil dieser Assembly sind und optional Ressourcenmodule enthalten. (Geerbt von AssemblyBuilder) |
| GetManifestResourceInfo(String) |
Gibt Informationen dazu zurück, wie die angegebene Ressource beibehalten wurde. (Geerbt von AssemblyBuilder) |
| GetManifestResourceNames() |
Lädt die angegebene Manifestressource aus dieser Assembly. (Geerbt von AssemblyBuilder) |
| GetManifestResourceStream(String) |
Lädt die angegebene Manifestressource aus dieser Assembly. (Geerbt von AssemblyBuilder) |
| GetManifestResourceStream(Type, String) |
Lädt die angegebene Manifestressource im Bereich des Namespaces des angegebenen Typs aus dieser Assembly. (Geerbt von AssemblyBuilder) |
| GetModule(String) |
Ruft das angegebene Modul in dieser Assembly ab. (Geerbt von AssemblyBuilder) |
| GetModules() |
Ruft alle Module ab, die Teil dieser Assembly sind. (Geerbt von Assembly) |
| GetModules(Boolean) |
Ruft alle Module ab, die Teil dieser Assembly sind, und enthält optional Ressourcenmodule. (Geerbt von AssemblyBuilder) |
| GetName() |
Ruft eine AssemblyName für diese Assembly ab. (Geerbt von Assembly) |
| GetName(Boolean) |
Ruft das, das AssemblyName beim Erstellen der aktuellen dynamischen Assembly angegeben wurde. |
| GetObjectData(SerializationInfo, StreamingContext) |
Veraltet.
Ruft Serialisierungsinformationen mit allen Daten ab, die erforderlich sind, um diese Assembly erneut zu ermitteln. (Geerbt von Assembly) |
| GetReferencedAssemblies() |
Ruft eine unvollständige Liste von AssemblyName Objekten für die Assemblys ab, auf die von diesem AssemblyBuilderverwiesen wird. (Geerbt von AssemblyBuilder) |
| GetSatelliteAssembly(CultureInfo, Version) |
Ruft die angegebene Version der Satellitenassembly für die angegebene Kultur ab. (Geerbt von AssemblyBuilder) |
| GetSatelliteAssembly(CultureInfo) |
Ruft die Satellitenassembly für die angegebene Kultur ab. (Geerbt von AssemblyBuilder) |
| GetType(String, Boolean, Boolean) |
Ruft den angegebenen Typ aus den Typen ab, die definiert und in der aktuellen AssemblyBuildererstellt wurden. (Geerbt von AssemblyBuilder) |
| GetType(String, Boolean) |
Ruft das Type Objekt mit dem angegebenen Namen in der Assemblyinstanz ab und löst optional eine Ausnahme aus, wenn der Typ nicht gefunden wird. (Geerbt von Assembly) |
| GetType(String) |
Ruft das Type Objekt mit dem angegebenen Namen in der Assemblyinstanz ab. (Geerbt von Assembly) |
| GetTypes() |
Ruft alle typen ab, die in dieser Assembly definiert sind. (Geerbt von Assembly) |
| IsDefined(Type, Boolean) |
Gibt einen Wert zurück, der angibt, ob mindestens eine Instanz des angegebenen Attributtyps auf dieses Element angewendet wird. (Geerbt von AssemblyBuilder) |
| LoadModule(String, Byte[], Byte[]) |
Lädt das Modul intern in dieser Assembly mit einem gemeinsamen Objektdateiformat (COFF)-basierten Bild, das ein ausgegebenes Modul oder eine Ressourcendatei enthält. Die unformatierten Bytes, die die Symbole für das Modul darstellen, werden ebenfalls geladen. (Geerbt von Assembly) |
| LoadModule(String, Byte[]) |
Lädt das Modul intern in dieser Assembly mit einem gemeinsamen Objektdateiformat (COFF)-basierten Bild, das ein ausgegebenes Modul oder eine Ressourcendatei enthält. (Geerbt von Assembly) |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| Save(Stream) |
Serialisiert die Assembly in den angegebenen Datenstrom. |
| Save(String) |
Speichert die Assembly auf dem Datenträger. |
| SetCustomAttribute(ConstructorInfo, Byte[]) |
Legen Sie ein benutzerdefiniertes Attribut für diese Assembly mithilfe eines angegebenen benutzerdefinierten Attributblobs fest. (Geerbt von AssemblyBuilder) |
| SetCustomAttribute(CustomAttributeBuilder) |
Legen Sie ein benutzerdefiniertes Attribut für diese Assembly mithilfe eines benutzerdefinierten Attribut-Generators fest. (Geerbt von AssemblyBuilder) |
| SetCustomAttributeCore(ConstructorInfo, ReadOnlySpan<Byte>) |
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird ein benutzerdefiniertes Attribut für diese Assembly festgelegt. (Geerbt von AssemblyBuilder) |
| ToString() |
Gibt den vollständigen Namen der Assembly zurück, der auch als Anzeigename bezeichnet wird. (Geerbt von Assembly) |
Ereignisse
| Name | Beschreibung |
|---|---|
| ModuleResolve |
Tritt auf, wenn das Klassenladeprogramm für common language runtime keinen Verweis auf ein internes Modul einer Assembly auf normalem Wege auflösen kann. (Geerbt von Assembly) |
Erweiterungsmethoden
| Name | Beschreibung |
|---|---|
| GetCustomAttribute(Assembly, Type) |
Ruft ein benutzerdefiniertes Attribut eines angegebenen Typs ab, das auf eine angegebene Assembly angewendet wird. |
| GetCustomAttribute<T>(Assembly) |
Ruft ein benutzerdefiniertes Attribut eines angegebenen Typs ab, das auf eine angegebene Assembly angewendet wird. |
| GetCustomAttributes(Assembly, Type) |
Ruft eine Auflistung von benutzerdefinierten Attributen eines angegebenen Typs ab, die auf eine angegebene Assembly angewendet werden. |
| GetCustomAttributes(Assembly) |
Ruft eine Auflistung von benutzerdefinierten Attributen ab, die auf eine angegebene Assembly angewendet werden. |
| GetCustomAttributes<T>(Assembly) |
Ruft eine Auflistung von benutzerdefinierten Attributen eines angegebenen Typs ab, die auf eine angegebene Assembly angewendet werden. |
| GetExportedTypes(Assembly) |
Stellt eine AssemblyBuilder-Implementierung bereit, die eine Assembly auf einem Datenträger oder Stream speichern kann. |
| GetModules(Assembly) |
Stellt eine AssemblyBuilder-Implementierung bereit, die eine Assembly auf einem Datenträger oder Stream speichern kann. |
| GetTypes(Assembly) |
Stellt eine AssemblyBuilder-Implementierung bereit, die eine Assembly auf einem Datenträger oder Stream speichern kann. |
| IsDefined(Assembly, Type) |
Gibt an, ob benutzerdefinierte Attribute eines angegebenen Typs auf eine angegebene Assembly angewendet werden. |
| TryGetRawMetadata(Assembly, Byte*, Int32) |
Ruft den Metadatenabschnitt der Assembly ab, für die Verwendung mit MetadataReader. |