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
| Nombre | Description |
|---|---|
| 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
- 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
que ModuleBuilder 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 el mismo 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 = 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, 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.
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
que ModuleBuilder 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, suprimir la información de símbolos.
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.
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 = 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 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.
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 truees , la información simbólica 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-
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 Run atributo .
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 = 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.