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 persistente con el nombre especificado que se guardará en el archivo especificado. No se emite información de símbolos. |
DefineDynamicModule(String, String, Boolean) |
Define un módulo dinámico persistente, 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)
- Source:
- AssemblyBuilder.cs
- Source:
- AssemblyBuilder.cs
- Source:
- AssemblyBuilder.cs
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
Un ModuleBuilder que representa el módulo dinámico definido.
Excepciones
name
comienza con espacios en blanco.
-o-
La longitud de name
es cero.
-o-
La longitud de name
es mayor que la longitud máxima definida por el sistema.
-o-
Solo .NET Framework: ya se ha definido un módulo con la misma name
en este ensamblado.
name
es null
.
Solo .NET Core y .NET 5+: ya se ha definido un módulo dinámico en este ensamblado.
El autor de la llamada no tiene el permiso necesario.
No se puede cargar el ensamblado para el escritor de símbolos predeterminado.
-o-
No se encuentra el tipo que implementa la interfaz predeterminada del escritor de símbolos.
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
Solo .NET Core y .NET 5+: no se admiten ensamblados de varios módulos. Solo se puede definir un módulo dinámico en un ensamblado.
Solo .NET Framework: 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, incluso si el ensamblado dinámico primario se creó con RunAndSave.
Nota
Para suprimir las optimizaciones al depurar módulos dinámicos, aplique el atributo DebuggableAttribute al ensamblado dinámico antes de llamar a DefineDynamicModule. Cree una instancia de DebuggableAttribute con la marca DisableOptimizations y aplíquela mediante el método SetCustomAttribute. 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 marca ReflectionPermissionFlag.ReflectionEmit. (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
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; de lo contrario, false
.
Devoluciones
Un ModuleBuilder que representa el módulo dinámico definido.
Excepciones
name
comienza con espacios en blanco.
-o-
La longitud de name
es cero.
-o-
La longitud de name
es mayor que la longitud máxima definida por el sistema.
name
es null
.
No se puede cargar el ensamblado para el escritor de símbolos predeterminado.
-o-
No se encuentra el tipo que implementa la interfaz predeterminada del escritor de símbolos.
El autor de la llamada no tiene el permiso necesario.
Ejemplos
En el ejemplo de código siguiente se muestra cómo crear un módulo dinámico transitorio mediante DefineDynamicModule
, supresión de 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, incluso si el ensamblado dinámico primario se creó con RunAndSave.
Nota
Para suprimir las optimizaciones al depurar módulos dinámicos, aplique el atributo DebuggableAttribute al ensamblado dinámico antes de llamar a DefineDynamicModule. Cree una instancia de DebuggableAttribute con la marca DisableOptimizations y aplíquela mediante el método SetCustomAttribute. 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 marca ReflectionPermissionFlag.ReflectionEmit. (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
DefineDynamicModule(String, String)
Define un módulo dinámico persistente con el nombre especificado que se guardará en el archivo especificado. No se emite 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-
La longitud de name
es mayor que la longitud máxima definida por el sistema.
-o-
fileName
contiene una especificación de ruta de acceso (un componente de directorio, por ejemplo).
-o-
Hay un conflicto con el nombre de otro archivo que pertenece a este ensamblado.
Este ensamblado se ha guardado anteriormente.
Se llamó a este ensamblado en un ensamblado dinámico con Run atributo .
El autor de la llamada no tiene el permiso necesario.
No se puede cargar el ensamblado para el escritor de símbolos predeterminado.
-o-
No se encuentra el tipo que implementa la interfaz predeterminada del escritor de símbolos.
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 o el atributo RunAndSave.
Si desea que el módulo contenga el manifiesto de ensamblado, name
debe ser el mismo que el nombre del ensamblado (es decir, la propiedad AssemblyName.Name 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 atributo DebuggableAttribute al ensamblado dinámico antes de llamar a DefineDynamicModule. Cree una instancia de DebuggableAttribute con la marca DisableOptimizations y aplíquela mediante el método SetCustomAttribute. 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 marca ReflectionPermissionFlag.ReflectionEmit. (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
DefineDynamicModule(String, String, Boolean)
Define un módulo dinámico persistente, 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 true
, se escribe información simbólica mediante 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-
La longitud de name
es mayor que la longitud máxima definida por el sistema.
-o-
fileName
contiene una especificación de ruta de acceso (un componente de directorio, por ejemplo).
-o-
Hay un conflicto con el nombre de otro archivo que pertenece a este ensamblado.
Este ensamblado se ha guardado anteriormente.
Se llamó a este ensamblado en un ensamblado dinámico con el atributo Run.
No se puede cargar el ensamblado para el escritor de símbolos predeterminado.
-o-
No se encuentra el tipo que implementa la interfaz predeterminada del escritor de símbolos.
El autor de la llamada no tiene el permiso necesario.
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 o el atributo RunAndSave.
Si desea que el módulo contenga el manifiesto de ensamblado, name
debe ser el mismo que el nombre del ensamblado (es decir, la propiedad AssemblyName.Name 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 atributo DebuggableAttribute al ensamblado dinámico antes de llamar a DefineDynamicModule. Cree una instancia de DebuggableAttribute con la marca DisableOptimizations y aplíquela mediante el método SetCustomAttribute. 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 marca ReflectionPermissionFlag.ReflectionEmit. (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.