AssemblyBuilder.DefineDynamicModule Methode
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.
Definiert ein dynamisches Modul in dieser Assembly.
Überlädt
DefineDynamicModule(String) |
Definiert ein benanntes vorübergehendes dynamisches Modul in dieser Assembly. |
DefineDynamicModule(String, Boolean) |
Definiert ein benanntes vorübergehendes dynamisches Modul in dieser Assembly und gibt an, ob Symbolinformationen ausgegeben werden sollen. |
DefineDynamicModule(String, String) |
Definiert ein persistentes dynamisches Modul mit dem angegebenen Namen, der in der angegebenen Datei gespeichert wird. Es werden keine Symbolinformationen ausgegeben. |
DefineDynamicModule(String, String, Boolean) |
Definiert ein persistentes dynamisches Modul, das den Modulnamen angibt, den Namen der Datei, in der das Modul gespeichert wird, und ob Symbolinformationen mithilfe des Standardsymbolschreibers ausgegeben werden sollen. |
DefineDynamicModule(String)
- Quelle:
- AssemblyBuilder.cs
- Quelle:
- AssemblyBuilder.cs
- Quelle:
- AssemblyBuilder.cs
Definiert ein benanntes vorübergehendes dynamisches Modul in dieser Assembly.
public:
System::Reflection::Emit::ModuleBuilder ^ DefineDynamicModule(System::String ^ name);
public System.Reflection.Emit.ModuleBuilder DefineDynamicModule (string name);
member this.DefineDynamicModule : string -> System.Reflection.Emit.ModuleBuilder
Public Function DefineDynamicModule (name As String) As ModuleBuilder
Parameter
- name
- String
Der Name des dynamischen Moduls.
Gibt zurück
Ein ModuleBuilder, der das definierte dynamische Modul darstellt.
Ausnahmen
name
beginnt mit Leerzeichen.
-oder-
Die Länge von name
ist Null.
-oder-
Die Länge der name
ist größer als die vom System definierte maximale Länge.
-oder-
.NET Framework nur: In dieser Assembly wurde bereits ein Modul mit demselben name
definiert.
name
ist null
.
Nur .NET Core und .NET 5+: In dieser Assembly wurde bereits ein dynamisches Modul definiert.
Der Aufrufer verfügt nicht über die erforderliche Berechtigung.
Die Assembly für standardsymbol writer kann nicht geladen werden.
-oder-
Der Typ, der die Standardmäßige Symbol writer-Schnittstelle implementiert, wurde nicht gefunden.
Beispiele
Im folgenden Codebeispiel wird das Erstellen eines vorübergehenden dynamischen Moduls mithilfe von DefineDynamicModule
veranschaulicht.
AppDomain^ myAppDomain = Thread::GetDomain();
AssemblyName^ myAsmName = gcnew AssemblyName;
myAsmName->Name = "MyAssembly";
AssemblyBuilder^ myAsmBuilder = myAppDomain->DefineDynamicAssembly(
myAsmName, AssemblyBuilderAccess::Run );
// Create a transient dynamic module. Since no DLL name is specified with
// this constructor, it cannot be saved.
ModuleBuilder^ myModuleBuilder = myAsmBuilder->DefineDynamicModule( "MyModule1" );
AppDomain myAppDomain = Thread.GetDomain();
AssemblyName myAsmName = new AssemblyName();
myAsmName.Name = "MyAssembly";
AssemblyBuilder myAsmBuilder = myAppDomain.DefineDynamicAssembly(
myAsmName,
AssemblyBuilderAccess.Run);
// Create a transient dynamic module. Since no DLL name is specified with
// this constructor, it can not be saved.
ModuleBuilder myModuleBuilder = myAsmBuilder.DefineDynamicModule("MyModule1");
Dim myAppDomain As AppDomain = Thread.GetDomain()
Dim myAsmName As New AssemblyName()
myAsmName.Name = "MyAssembly"
Dim myAsmBuilder As AssemblyBuilder = myAppDomain.DefineDynamicAssembly(myAsmName, _
AssemblyBuilderAccess.Run)
' Create a transient dynamic module. Since no DLL name is specified with
' this constructor, it can not be saved.
Dim myModuleBuilder As ModuleBuilder = myAsmBuilder.DefineDynamicModule("MyModule1")
Hinweise
Nur .NET Core und .NET 5+: Assemblys mit mehreren Modulen werdennicht unterstützt. In einer Assembly kann nur ein dynamisches Modul definiert werden.
.NET Framework nur: Es ist ein Fehler, mehrere dynamische Module mit demselben Namen in einer Assembly zu definieren.
Das definierte dynamische Modul ist vorübergehend. Das dynamische Modul wird nicht gespeichert, auch wenn die übergeordnete dynamische Assembly mit RunAndSaveerstellt wurde.
Anmerkung
Um Optimierungen beim Debuggen dynamischer Module zu unterdrücken, wenden Sie das attribut DebuggableAttribute auf die dynamische Assembly an, bevor Sie DefineDynamicModuleaufrufen. Erstellen Sie eine Instanz von DebuggableAttribute mit dem DisableOptimizations-Flag, und wenden Sie sie mithilfe der SetCustomAttribute-Methode an. Das Attribut muss auf die dynamische Assembly angewendet werden. Sie hat keine Auswirkung, wenn sie auf das Modul angewendet wird.
Anmerkung
Ab .NET Framework 2.0 Service Pack 1 erfordert dieses Mitglied nicht mehr ReflectionPermission mit dem ReflectionPermissionFlag.ReflectionEmit-Flag. (Siehe Sicherheitsprobleme in Reflection Emit.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf .NET Framework 3.5 oder höher ausgerichtet sein.
Gilt für:
DefineDynamicModule(String, Boolean)
Definiert ein benanntes vorübergehendes dynamisches Modul in dieser Assembly und gibt an, ob Symbolinformationen ausgegeben werden sollen.
public:
System::Reflection::Emit::ModuleBuilder ^ DefineDynamicModule(System::String ^ name, bool emitSymbolInfo);
public System.Reflection.Emit.ModuleBuilder DefineDynamicModule (string name, bool emitSymbolInfo);
member this.DefineDynamicModule : string * bool -> System.Reflection.Emit.ModuleBuilder
Public Function DefineDynamicModule (name As String, emitSymbolInfo As Boolean) As ModuleBuilder
Parameter
- name
- String
Der Name des dynamischen Moduls.
- emitSymbolInfo
- Boolean
true
, wenn Symbolinformationen ausgegeben werden sollen; andernfalls false
.
Gibt zurück
Ein ModuleBuilder, der das definierte dynamische Modul darstellt.
Ausnahmen
name
beginnt mit Leerzeichen.
-oder-
Die Länge von name
ist Null.
-oder-
Die Länge der name
ist größer als die vom System definierte maximale Länge.
name
ist null
.
Die Assembly für standardsymbol writer kann nicht geladen werden.
-oder-
Der Typ, der die Standardmäßige Symbol writer-Schnittstelle implementiert, wurde nicht gefunden.
Der Aufrufer verfügt nicht über die erforderliche Berechtigung.
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie Sie mithilfe von DefineDynamicModule
ein vorübergehendes dynamisches Modul erstellen und Symbolinformationen unterdrücken.
AppDomain^ myAppDomain = Thread::GetDomain();
AssemblyName^ myAsmName = gcnew AssemblyName;
myAsmName->Name = "MyAssembly";
AssemblyBuilder^ myAsmBuilder = myAppDomain->DefineDynamicAssembly(
myAsmName, AssemblyBuilderAccess::Run );
// Create a transient dynamic module. Since no DLL name is specified with
// this constructor, it can not be saved. By specifying the second parameter
// of the constructor as false, we can suppress the emission of symbol info.
ModuleBuilder^ myModuleBuilder = myAsmBuilder->DefineDynamicModule(
"MyModule2", false );
AppDomain myAppDomain = Thread.GetDomain();
AssemblyName myAsmName = new AssemblyName();
myAsmName.Name = "MyAssembly";
AssemblyBuilder myAsmBuilder = myAppDomain.DefineDynamicAssembly(
myAsmName,
AssemblyBuilderAccess.Run);
// Create a transient dynamic module. Since no DLL name is specified with
// this constructor, it can not be saved. By specifying the second parameter
// of the constructor as false, we can suppress the emission of symbol info.
ModuleBuilder myModuleBuilder = myAsmBuilder.DefineDynamicModule("MyModule2",
false);
Dim myAppDomain As AppDomain = Thread.GetDomain()
Dim myAsmName As New AssemblyName()
myAsmName.Name = "MyAssembly"
Dim myAsmBuilder As AssemblyBuilder = myAppDomain.DefineDynamicAssembly(myAsmName, _
AssemblyBuilderAccess.Run)
' Create a transient dynamic module. Since no DLL name is specified with
' this constructor, it can not be saved. By specifying the second parameter
' of the constructor as false, we can suppress the emission of symbol info.
Dim myModuleBuilder As ModuleBuilder = myAsmBuilder.DefineDynamicModule("MyModule2", _
False)
Hinweise
Fehler beim Definieren mehrerer dynamischer Module mit demselben Namen in einer Assembly.
Das dynamische Modul wird nicht gespeichert, auch wenn die übergeordnete dynamische Assembly mit RunAndSaveerstellt wurde.
Anmerkung
Um Optimierungen beim Debuggen dynamischer Module zu unterdrücken, wenden Sie das attribut DebuggableAttribute auf die dynamische Assembly an, bevor Sie DefineDynamicModuleaufrufen. Erstellen Sie eine Instanz von DebuggableAttribute mit dem DisableOptimizations-Flag, und wenden Sie sie mithilfe der SetCustomAttribute-Methode an. Das Attribut muss auf die dynamische Assembly angewendet werden. Sie hat keine Auswirkung, wenn sie auf das Modul angewendet wird.
Anmerkung
Ab .NET Framework 2.0 Service Pack 1 erfordert dieses Mitglied nicht mehr ReflectionPermission mit dem ReflectionPermissionFlag.ReflectionEmit-Flag. (Siehe Sicherheitsprobleme in Reflection Emit.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf .NET Framework 3.5 oder höher ausgerichtet sein.
Gilt für:
DefineDynamicModule(String, String)
Definiert ein persistentes dynamisches Modul mit dem angegebenen Namen, der in der angegebenen Datei gespeichert wird. Es werden keine Symbolinformationen ausgegeben.
public:
System::Reflection::Emit::ModuleBuilder ^ DefineDynamicModule(System::String ^ name, System::String ^ fileName);
public System.Reflection.Emit.ModuleBuilder DefineDynamicModule (string name, string fileName);
member this.DefineDynamicModule : string * string -> System.Reflection.Emit.ModuleBuilder
Public Function DefineDynamicModule (name As String, fileName As String) As ModuleBuilder
Parameter
- name
- String
Der Name des dynamischen Moduls.
- fileName
- String
Der Name der Datei, in der das dynamische Modul gespeichert werden soll.
Gibt zurück
Ein ModuleBuilder-Objekt, das das definierte dynamische Modul darstellt.
Ausnahmen
name
oder fileName
ist null
.
Die Länge von name
oder fileName
ist Null.
-oder-
Die Länge der name
ist größer als die vom System definierte maximale Länge.
-oder-
fileName
enthält eine Pfadspezifikation (z. B. eine Verzeichniskomponente).
-oder-
Es besteht ein Konflikt mit dem Namen einer anderen Datei, die zu dieser Assembly gehört.
Diese Assembly wurde zuvor gespeichert.
Diese Assembly wurde für eine dynamische Assembly mit Run Attribut aufgerufen.
Der Aufrufer verfügt nicht über die erforderliche Berechtigung.
Die Assembly für standardsymbol writer kann nicht geladen werden.
-oder-
Der Typ, der die Standardmäßige Symbol writer-Schnittstelle implementiert, wurde nicht gefunden.
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie Sie mithilfe von DefineDynamicModule
ein persistentes dynamisches Modul erstellen.
AppDomain^ myAppDomain = Thread::GetDomain();
AssemblyName^ myAsmName = gcnew AssemblyName;
myAsmName->Name = "MyAssembly";
AssemblyBuilder^ myAsmBuilder = myAppDomain->DefineDynamicAssembly(
myAsmName, AssemblyBuilderAccess::Run );
// Create a dynamic module that can be saved as the specified DLL name.
ModuleBuilder^ myModuleBuilder = myAsmBuilder->DefineDynamicModule(
"MyModule3", "MyModule3.dll" );
AppDomain myAppDomain = Thread.GetDomain();
AssemblyName myAsmName = new AssemblyName();
myAsmName.Name = "MyAssembly";
AssemblyBuilder myAsmBuilder = myAppDomain.DefineDynamicAssembly(
myAsmName,
AssemblyBuilderAccess.Run);
// Create a dynamic module that can be saved as the specified DLL name.
ModuleBuilder myModuleBuilder = myAsmBuilder.DefineDynamicModule("MyModule3",
"MyModule3.dll");
Dim myAppDomain As AppDomain = Thread.GetDomain()
Dim myAsmName As New AssemblyName()
myAsmName.Name = "MyAssembly"
Dim myAsmBuilder As AssemblyBuilder = myAppDomain.DefineDynamicAssembly(myAsmName, _
AssemblyBuilderAccess.Run)
' Create a dynamic module that can be saved as the specified DLL name.
Dim myModuleBuilder As ModuleBuilder = myAsmBuilder.DefineDynamicModule("MyModule3", _
"MyModule3.dll")
Hinweise
Um ein persistentes dynamisches Modul zu definieren, muss diese Assembly mit dem Save oder dem attribut RunAndSave erstellt werden.
Wenn das Modul das Assemblymanifest enthalten soll, sollte name
mit dem Namen der Assembly übereinstimmen (d. h. die AssemblyName.Name Eigenschaft der AssemblyName, die zum Erstellen der dynamischen Assembly verwendet wurde) und fileName
mit dem Dateinamen identisch sein, den Sie beim Speichern der Assembly angeben.
In einer Assembly mit nur einem Modul sollte dieses Modul das Assemblymanifest enthalten.
Anmerkung
Um Optimierungen beim Debuggen dynamischer Module zu unterdrücken, wenden Sie das attribut DebuggableAttribute auf die dynamische Assembly an, bevor Sie DefineDynamicModuleaufrufen. Erstellen Sie eine Instanz von DebuggableAttribute mit dem DisableOptimizations-Flag, und wenden Sie sie mithilfe der SetCustomAttribute-Methode an. Das Attribut muss auf die dynamische Assembly angewendet werden. Sie hat keine Auswirkung, wenn sie auf das Modul angewendet wird.
Anmerkung
Ab .NET Framework 2.0 Service Pack 1 erfordert dieses Mitglied nicht mehr ReflectionPermission mit dem ReflectionPermissionFlag.ReflectionEmit-Flag. (Siehe Sicherheitsprobleme in Reflection Emit.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf .NET Framework 3.5 oder höher ausgerichtet sein.
Gilt für:
DefineDynamicModule(String, String, Boolean)
Definiert ein persistentes dynamisches Modul, das den Modulnamen angibt, den Namen der Datei, in der das Modul gespeichert wird, und ob Symbolinformationen mithilfe des Standardsymbolschreibers ausgegeben werden sollen.
public:
System::Reflection::Emit::ModuleBuilder ^ DefineDynamicModule(System::String ^ name, System::String ^ fileName, bool emitSymbolInfo);
public System.Reflection.Emit.ModuleBuilder DefineDynamicModule (string name, string fileName, bool emitSymbolInfo);
member this.DefineDynamicModule : string * string * bool -> System.Reflection.Emit.ModuleBuilder
Public Function DefineDynamicModule (name As String, fileName As String, emitSymbolInfo As Boolean) As ModuleBuilder
Parameter
- name
- String
Der Name des dynamischen Moduls.
- fileName
- String
Der Name der Datei, in der das dynamische Modul gespeichert werden soll.
- emitSymbolInfo
- Boolean
Wenn true
, werden symbolische Informationen mithilfe des Standardsymbolschreibers geschrieben.
Gibt zurück
Ein ModuleBuilder-Objekt, das das definierte dynamische Modul darstellt.
Ausnahmen
name
oder fileName
ist null
.
Die Länge von name
oder fileName
ist Null.
-oder-
Die Länge der name
ist größer als die vom System definierte maximale Länge.
-oder-
fileName
enthält eine Pfadspezifikation (z. B. eine Verzeichniskomponente).
-oder-
Es besteht ein Konflikt mit dem Namen einer anderen Datei, die zu dieser Assembly gehört.
Diese Assembly wurde zuvor gespeichert.
Diese Assembly wurde für eine dynamische Assembly mit dem attribut Run aufgerufen.
Die Assembly für standardsymbol writer kann nicht geladen werden.
-oder-
Der Typ, der die Standardmäßige Symbol writer-Schnittstelle implementiert, wurde nicht gefunden.
Der Aufrufer verfügt nicht über die erforderliche Berechtigung.
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie Sie mithilfe von DefineDynamicModule
ein persistentes dynamisches Modul mit Symbolemissionen erstellen.
AppDomain^ myAppDomain = Thread::GetDomain();
AssemblyName^ myAsmName = gcnew AssemblyName;
myAsmName->Name = "MyAssembly";
AssemblyBuilder^ myAsmBuilder = myAppDomain->DefineDynamicAssembly(
myAsmName, AssemblyBuilderAccess::Run );
// Create a dynamic module that can be saved as the specified DLL name. By
// specifying the third parameter as true, we can allow the emission of symbol info.
ModuleBuilder^ myModuleBuilder = myAsmBuilder->DefineDynamicModule(
"MyModule4", "MyModule4.dll", true );
AppDomain myAppDomain = Thread.GetDomain();
AssemblyName myAsmName = new AssemblyName();
myAsmName.Name = "MyAssembly";
AssemblyBuilder myAsmBuilder = myAppDomain.DefineDynamicAssembly(
myAsmName,
AssemblyBuilderAccess.Run);
// Create a dynamic module that can be saved as the specified DLL name. By
// specifying the third parameter as true, we can allow the emission of symbol info.
ModuleBuilder myModuleBuilder = myAsmBuilder.DefineDynamicModule("MyModule4",
"MyModule4.dll",
true);
Dim myAppDomain As AppDomain = Thread.GetDomain()
Dim myAsmName As New AssemblyName()
myAsmName.Name = "MyAssembly"
Dim myAsmBuilder As AssemblyBuilder = myAppDomain.DefineDynamicAssembly(myAsmName, _
AssemblyBuilderAccess.Run)
' Create a dynamic module that can be saved as the specified DLL name. By
' specifying the third parameter as true, we can allow the emission of symbol info.
Dim myModuleBuilder As ModuleBuilder = myAsmBuilder.DefineDynamicModule("MyModule4", _
"MyModule4.dll", _
True)
Hinweise
Um ein persistentes dynamisches Modul zu definieren, muss diese Assembly mit dem Save oder dem attribut RunAndSave erstellt werden.
Wenn das Modul das Assemblymanifest enthalten soll, sollte name
mit dem Namen der Assembly übereinstimmen (d. h. die AssemblyName.Name Eigenschaft der AssemblyName, die zum Erstellen der dynamischen Assembly verwendet wurde) und fileName
mit dem Dateinamen identisch sein, den Sie beim Speichern der Assembly angeben.
In einer Assembly mit nur einem Modul sollte dieses Modul das Assemblymanifest enthalten.
Anmerkung
Um Optimierungen beim Debuggen dynamischer Module zu unterdrücken, wenden Sie das attribut DebuggableAttribute auf die dynamische Assembly an, bevor Sie DefineDynamicModuleaufrufen. Erstellen Sie eine Instanz von DebuggableAttribute mit dem DisableOptimizations-Flag, und wenden Sie sie mithilfe der SetCustomAttribute-Methode an. Das Attribut muss auf die dynamische Assembly angewendet werden. Sie hat keine Auswirkung, wenn sie auf das Modul angewendet wird.
Anmerkung
Ab .NET Framework 2.0 Service Pack 1 erfordert dieses Mitglied nicht mehr ReflectionPermission mit dem ReflectionPermissionFlag.ReflectionEmit-Flag. (Siehe Sicherheitsprobleme in Reflection Emit.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf .NET Framework 3.5 oder höher ausgerichtet sein.