AssemblyBuilder.DefineDynamicModule Método

Definición

Define un módulo dinámico en este ensamblado.

Sobrecargas

DefineDynamicModule(String)

Define un módulo dinámico transitorio con nombre en este ensamblado.

DefineDynamicModule(String, Boolean)

Define un módulo dinámico transitorio con nombre en este ensamblado y especifica si se debe emitir información de símbolos.

DefineDynamicModule(String, String)

Define un módulo dinámico con persistencia con el nombre especificado que se guardará en el archivo especificado. No se emitirá información de símbolos.

DefineDynamicModule(String, String, Boolean)

Define un módulo dinámico con persistencia, especificando el nombre del módulo, el nombre del archivo en el que se guardará el módulo y si se debe emitir información de símbolos mediante el escritor de símbolos predeterminado.

DefineDynamicModule(String)

Define un módulo dinámico transitorio con nombre en este ensamblado.

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

Parámetros

name
String

Nombre del módulo dinámico.

Devoluciones

ModuleBuilder que representa el módulo dinámico definido.

Excepciones

name comienza con un espacio en blanco.

o bien

La longitud de name es cero.

o bien

La longitud de name es superior a la longitud máxima definida por el sistema.

name es null.

El llamador no dispone del permiso requerido.

No se puede cargar el ensamblado para el sistema de escritura de símbolos predeterminado.

o bien

No se encuentra el tipo que implementa la interfaz del escritor de símbolos predeterminado.

Ejemplos

En el ejemplo de código siguiente se muestra cómo crear un módulo dinámico transitorio mediante 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")

Comentarios

Es un error definir varios módulos dinámicos con el mismo nombre en un ensamblado.

El módulo dinámico definido es transitorio. El módulo dinámico no se guarda, aunque el ensamblado dinámico primario se haya creado con RunAndSave.

Nota

Para suprimir las optimizaciones al depurar módulos dinámicos, aplique el DebuggableAttribute atributo al ensamblado dinámico antes de llamar a DefineDynamicModule. Cree una instancia de DebuggableAttribute con la DisableOptimizations marca y aplíquela mediante el SetCustomAttribute método . El atributo debe aplicarse al ensamblado dinámico. No tiene ningún efecto si se aplica al módulo.

Nota

A partir de .NET Framework 2.0 Service Pack 1, este miembro ya no requiere ReflectionPermission con la ReflectionPermissionFlag.ReflectionEmit marca . (Consulte Problemas de seguridad en emisión de reflexión). Para usar esta funcionalidad, la aplicación debe tener como destino .NET Framework 3.5 o posterior.

Se aplica a

DefineDynamicModule(String, Boolean)

Define un módulo dinámico transitorio con nombre en este ensamblado y especifica si se debe emitir información de símbolos.

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

Parámetros

name
String

Nombre del módulo dinámico.

emitSymbolInfo
Boolean

true si se va a emitir información de símbolos; si no, false.

Devoluciones

ModuleBuilder que representa el módulo dinámico definido.

Excepciones

name comienza con un espacio en blanco.

o bien

La longitud de name es cero.

o bien

La longitud de name es superior a la longitud máxima definida por el sistema.

name es null.

No se puede cargar el ensamblado para el sistema de escritura de símbolos predeterminado.

o bien

No se encuentra el tipo que implementa la interfaz del escritor de símbolos predeterminado.

El llamador no dispone del permiso requerido.

Ejemplos

En el ejemplo de código siguiente se muestra cómo crear un módulo dinámico transitorio mediante DefineDynamicModule, suprimir la información de símbolos.

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)

Comentarios

Es un error definir varios módulos dinámicos con el mismo nombre en un ensamblado.

El módulo dinámico no se guarda, aunque el ensamblado dinámico primario se haya creado con RunAndSave.

Nota

Para suprimir las optimizaciones al depurar módulos dinámicos, aplique el DebuggableAttribute atributo al ensamblado dinámico antes de llamar a DefineDynamicModule. Cree una instancia de DebuggableAttribute con la DisableOptimizations marca y aplíquela mediante el SetCustomAttribute método . El atributo debe aplicarse al ensamblado dinámico. No tiene ningún efecto si se aplica al módulo.

Nota

A partir de .NET Framework 2.0 Service Pack 1, este miembro ya no requiere ReflectionPermission con la ReflectionPermissionFlag.ReflectionEmit marca . (Consulte Problemas de seguridad en emisión de reflexión). Para usar esta funcionalidad, la aplicación debe tener como destino .NET Framework 3.5 o posterior.

Se aplica a

DefineDynamicModule(String, String)

Define un módulo dinámico con persistencia con el nombre especificado que se guardará en el archivo especificado. No se emitirá información de símbolos.

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

Parámetros

name
String

Nombre del módulo dinámico.

fileName
String

Nombre del archivo en el que se debe guardar el módulo dinámico.

Devoluciones

Objeto ModuleBuilder que representa el módulo dinámico definido.

Excepciones

name o fileName es null.

La longitud de name o fileName es cero.

o bien

La longitud de name es superior a la longitud máxima definida por el sistema.

o bien

fileName contiene una especificación de ruta de acceso (por ejemplo, un componente de directorio).

o bien

Hay un conflicto con el nombre de otro archivo que pertenece a este ensamblado.

Este ensamblado se ha guardado previamente.

Se llamó a este ensamblado en un ensamblado dinámico con el atributo Run.

El llamador no dispone del permiso requerido.

No se puede cargar el ensamblado para el sistema de escritura de símbolos predeterminado.

o bien

No se encuentra el tipo que implementa la interfaz del escritor de símbolos predeterminado.

Ejemplos

En el ejemplo de código siguiente se muestra cómo crear un módulo dinámico persistente mediante DefineDynamicModule.

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")

Comentarios

Para definir un módulo dinámico persistente, este ensamblado debe crearse con el Save atributo o RunAndSave .

Si desea que el módulo contenga el manifiesto del ensamblado, name debe ser el mismo que el nombre del ensamblado (es decir, la AssemblyName.Name propiedad del AssemblyName usado para crear el ensamblado dinámico) y fileName debe ser el mismo que el nombre de archivo que especifique al guardar el ensamblado.

En un ensamblado con un solo módulo, ese módulo debe contener el manifiesto del ensamblado.

Nota

Para suprimir las optimizaciones al depurar módulos dinámicos, aplique el DebuggableAttribute atributo al ensamblado dinámico antes de llamar a DefineDynamicModule. Cree una instancia de DebuggableAttribute con la DisableOptimizations marca y aplíquela mediante el SetCustomAttribute método . El atributo debe aplicarse al ensamblado dinámico. No tiene ningún efecto si se aplica al módulo.

Nota

A partir de .NET Framework 2.0 Service Pack 1, este miembro ya no requiere ReflectionPermission con la ReflectionPermissionFlag.ReflectionEmit marca . (Consulte Problemas de seguridad en emisión de reflexión). Para usar esta funcionalidad, la aplicación debe tener como destino .NET Framework 3.5 o posterior.

Se aplica a

DefineDynamicModule(String, String, Boolean)

Define un módulo dinámico con persistencia, especificando el nombre del módulo, el nombre del archivo en el que se guardará el módulo y si se debe emitir información de símbolos mediante el escritor de símbolos predeterminado.

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

Parámetros

name
String

Nombre del módulo dinámico.

fileName
String

Nombre del archivo en el que se debe guardar el módulo dinámico.

emitSymbolInfo
Boolean

Si es true, la información de símbolos se escribe con el escritor de símbolos predeterminado.

Devoluciones

Objeto ModuleBuilder que representa el módulo dinámico definido.

Excepciones

name o fileName es null.

La longitud de name o fileName es cero.

o bien

La longitud de name es superior a la longitud máxima definida por el sistema.

o bien

fileName contiene una especificación de ruta de acceso (por ejemplo, un componente de directorio).

o bien

Hay un conflicto con el nombre de otro archivo que pertenece a este ensamblado.

Este ensamblado se ha guardado previamente.

Se llamó a este ensamblado en un ensamblado dinámico con el atributo Run.

No se puede cargar el ensamblado para el sistema de escritura de símbolos predeterminado.

o bien

No se encuentra el tipo que implementa la interfaz del escritor de símbolos predeterminado.

El llamador no dispone del permiso requerido.

Ejemplos

En el ejemplo de código siguiente se muestra cómo crear un módulo dinámico persistente con emisión de símbolos mediante DefineDynamicModule.

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)

Comentarios

Para definir un módulo dinámico persistente, este ensamblado debe crearse con el Save atributo o RunAndSave .

Si desea que el módulo contenga el manifiesto del ensamblado, name debe ser el mismo que el nombre del ensamblado (es decir, la AssemblyName.Name propiedad del AssemblyName usado para crear el ensamblado dinámico) y fileName debe ser el mismo que el nombre de archivo que especifique al guardar el ensamblado.

En un ensamblado con solo un módulo, ese módulo debe contener el manifiesto del ensamblado.

Nota

Para suprimir las optimizaciones al depurar módulos dinámicos, aplique el DebuggableAttribute atributo al ensamblado dinámico antes de llamar a DefineDynamicModule. Cree una instancia de DebuggableAttribute con la DisableOptimizations marca y aplíquela mediante el SetCustomAttribute método . El atributo debe aplicarse al ensamblado dinámico. No tiene ningún efecto si se aplica al módulo.

Nota

A partir de .NET Framework 2.0 Service Pack 1, este miembro ya no requiere ReflectionPermission con la ReflectionPermissionFlag.ReflectionEmit marca . (Consulte Problemas de seguridad en la emisión de reflexión). Para usar esta funcionalidad, la aplicación debe tener como destino .NET Framework 3.5 o posterior.

Se aplica a