AssemblyBuilder.DefineDynamicModule Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: a lo largo de 2024, eliminaremos gradualmente los problemas de GitHub como mecanismo de comentarios para el contenido y lo reemplazaremos por un nuevo sistema de comentarios. Para obtener más información, consulte:Enviar y ver comentarios de