AssemblyBuilder.DefineDynamicModule Methode

Definition

Definiert ein dynamisches Modul in dieser Assembly.

Überlädt

DefineDynamicModule(String)

Definiert ein benanntes flüchtiges dynamisches Modul in dieser Assembly.

DefineDynamicModule(String, Boolean)

Definiert ein benanntes flüchtiges dynamisches Modul in dieser Assembly und gibt an, ob Symbolinformationen ausgegeben werden sollen.

DefineDynamicModule(String, String)

Definiert ein dauerhaftes dynamisches Modul mit dem angegebenen Namen, das in der angegebenen Datei gespeichert wird. Es werden keine Symbolinformationen ausgegeben.

DefineDynamicModule(String, String, Boolean)

Definiert ein dauerhaftes dynamisches Modul, legt den Modulnamen und den Namen der Datei fest, in der das Modul gespeichert werden soll, und gibt an, ob Symbolinformationen mithilfe des Standardsymbolwriters ausgegeben werden sollen.

DefineDynamicModule(String)

Quelle:
AssemblyBuilder.cs
Quelle:
AssemblyBuilder.cs
Quelle:
AssemblyBuilder.cs

Definiert ein benanntes flüchtiges 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, das das definierte dynamische Modul darstellt.

Ausnahmen

name beginnt mit einem Leerzeichen.

- oder -

Die Länge von name ist 0 (null).

- oder -

Die Länge von name übersteigt die vom System definierte Höchstlänge.

name ist null.

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.

Die Assembly für den Standardsymbolwriter kann nicht geladen werden.

- oder -

Der Typ, der die Schnittstelle des Symbolwriters implementiert, wurde nicht gefunden.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie Ein vorübergehendes dynamisches Modul mit erstellt wird DefineDynamicModule.

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

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.

Hinweis

Um Optimierungen beim Debuggen dynamischer Module zu unterdrücken, wenden Sie das DebuggableAttribute Attribut auf die dynamische Assembly an, bevor Sie aufrufen DefineDynamicModule. Create eine instance von DebuggableAttribute mit dem DisableOptimizations Flag aus, und wenden Sie es mithilfe der SetCustomAttribute -Methode an. Das Attribut muss auf die dynamische Assembly angewendet werden. Es hat keine Auswirkung, wenn es auf das Modul angewendet wird.

Hinweis

Ab dem .NET Framework 2.0 Service Pack 1 benötigt ReflectionPermission dieses Mitglied nicht mehr das ReflectionPermissionFlag.ReflectionEmit Flag. (Siehe Sicherheitsprobleme in Reflection Emit.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf die .NET Framework 3.5 oder höher abzielen.

Gilt für:

DefineDynamicModule(String, Boolean)

Definiert ein benanntes flüchtiges 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, das das definierte dynamische Modul darstellt.

Ausnahmen

name beginnt mit einem Leerzeichen.

- oder -

Die Länge von name ist 0 (null).

- oder -

Die Länge von name übersteigt die vom System definierte Höchstlänge.

name ist null.

Die Assembly für den Standardsymbolwriter kann nicht geladen werden.

- oder -

Der Typ, der die Schnittstelle des Symbolwriters implementiert, wurde nicht gefunden.

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie Sie ein vorübergehendes dynamisches Modul erstellen, indem DefineDynamicModuleSie 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

Es ist ein Fehler, mehrere dynamische Module mit demselben Namen in einer Assembly zu definieren.

Das dynamische Modul wird nicht gespeichert, auch wenn die übergeordnete dynamische Assembly mit RunAndSaveerstellt wurde.

Hinweis

Um Optimierungen beim Debuggen dynamischer Module zu unterdrücken, wenden Sie das DebuggableAttribute Attribut auf die dynamische Assembly an, bevor Sie aufrufen DefineDynamicModule. Create eine instance von DebuggableAttribute mit dem DisableOptimizations Flag aus, und wenden Sie es mithilfe der SetCustomAttribute -Methode an. Das Attribut muss auf die dynamische Assembly angewendet werden. Es hat keine Auswirkung, wenn es auf das Modul angewendet wird.

Hinweis

Ab dem .NET Framework 2.0 Service Pack 1 benötigt ReflectionPermission dieses Mitglied nicht mehr das ReflectionPermissionFlag.ReflectionEmit Flag. (Siehe Sicherheitsprobleme in Reflection Emit.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf die .NET Framework 3.5 oder höher abzielen.

Gilt für:

DefineDynamicModule(String, String)

Definiert ein dauerhaftes dynamisches Modul mit dem angegebenen Namen, das 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 0 (null).

- oder -

Die Länge von name übersteigt die vom System definierte Höchstlänge.

- oder -

fileName enthält eine Pfadangabe (z. B. eine Verzeichniskomponente).

- oder -

Es liegt ein Konflikt mit dem Namen einer anderen Datei vor, die zu dieser Assembly gehört.

Diese Assembly wurde bereits 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 den Standardsymbolwriter kann nicht geladen werden.

- oder -

Der Typ, der die Schnittstelle des Symbolwriters implementiert, wurde nicht gefunden.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie Sie ein persistentes dynamisches Modul mit DefineDynamicModuleerstellen.

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 -Attribut oder RunAndSave erstellt werden.

Wenn das Modul das Assemblymanifest enthalten soll, name sollte der Name der Assembly (d. h. die AssemblyName.Name Eigenschaft der AssemblyName zum Erstellen der dynamischen Assembly verwendeten) identisch sein 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.

Hinweis

Um Optimierungen beim Debuggen dynamischer Module zu unterdrücken, wenden Sie das DebuggableAttribute Attribut auf die dynamische Assembly an, bevor Sie aufrufen DefineDynamicModule. Create eine instance von DebuggableAttribute mit dem DisableOptimizations Flag aus, und wenden Sie es mithilfe der SetCustomAttribute -Methode an. Das Attribut muss auf die dynamische Assembly angewendet werden. Es hat keine Auswirkung, wenn es auf das Modul angewendet wird.

Hinweis

Ab dem .NET Framework 2.0 Service Pack 1 benötigt ReflectionPermission dieses Mitglied nicht mehr das ReflectionPermissionFlag.ReflectionEmit Flag. (Siehe Sicherheitsprobleme in Reflection Emit.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf die .NET Framework 3.5 oder höher abzielen.

Gilt für:

DefineDynamicModule(String, String, Boolean)

Definiert ein dauerhaftes dynamisches Modul, legt den Modulnamen und den Namen der Datei fest, in der das Modul gespeichert werden soll, und gibt an, ob Symbolinformationen mithilfe des Standardsymbolwriters 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

Bei true werden Symbolinformationen mithilfe des Standardsymbolwriters 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 0 (null).

- oder -

Die Länge von name übersteigt die vom System definierte Höchstlänge.

- oder -

fileName enthält eine Pfadangabe (z. B. eine Verzeichniskomponente).

- oder -

Es liegt ein Konflikt mit dem Namen einer anderen Datei vor, die zu dieser Assembly gehört.

Diese Assembly wurde bereits gespeichert.

Diese Assembly wurde für eine dynamische Assembly mit dem Run-Attribut aufgerufen.

Die Assembly für den Standardsymbolwriter kann nicht geladen werden.

- oder -

Der Typ, der die Schnittstelle des Symbolwriters implementiert, wurde nicht gefunden.

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie Ein persistentes dynamisches Modul mit Symbolemission mithilfe DefineDynamicModulevon erstellt wird.

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 -Attribut oder RunAndSave erstellt werden.

Wenn das Modul das Assemblymanifest enthalten soll, name sollte mit dem Namen der Assembly identisch sein (d. h. die AssemblyName.Name -Eigenschaft von, die AssemblyName zum Erstellen der dynamischen Assembly verwendet wird) 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.

Hinweis

Um Optimierungen beim Debuggen dynamischer Module zu unterdrücken, wenden Sie das DebuggableAttribute Attribut auf die dynamische Assembly an, bevor Sie aufrufen DefineDynamicModule. Create eine instance von DebuggableAttribute mit dem DisableOptimizations Flag aus, und wenden Sie es mithilfe der SetCustomAttribute -Methode an. Das Attribut muss auf die dynamische Assembly angewendet werden. Es hat keine Auswirkung, wenn es auf das Modul angewendet wird.

Hinweis

Ab dem .NET Framework 2.0 Service Pack 1 benötigt ReflectionPermission dieses Mitglied nicht mehr das ReflectionPermissionFlag.ReflectionEmit Flag. (Siehe Sicherheitsprobleme in Reflektionsausgabe.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf die .NET Framework 3.5 oder höher ausgerichtet sein.

Gilt für: