AssemblyBuilder.DefineDynamicModule Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Define um módulo dinâmico neste conjunto.
Sobrecargas
| Name | Description |
|---|---|
| DefineDynamicModule(String) |
Define um módulo dinâmico transitório nomeado neste conjunto. |
| DefineDynamicModule(String, Boolean) |
Define um módulo dinâmico transitório nomeado neste conjunto e especifica se deve ser emitida informação de símbolo. |
| DefineDynamicModule(String, String) |
Define um módulo dinâmico persistente com o nome dado que será guardado no ficheiro especificado. Não é emitida qualquer informação de símbolo. |
| DefineDynamicModule(String, String, Boolean) |
Define um módulo dinâmico persistente, especificando o nome do módulo, o nome do ficheiro para o qual o módulo será guardado, e se a informação do símbolo deve ser emitida usando o gravador de símbolos padrão. |
DefineDynamicModule(String)
Define um módulo dinâmico transitório nomeado neste conjunto.
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
O nome do módulo dinâmico.
Devoluções
A ModuleBuilder representa o módulo dinâmico definido.
Exceções
name começa com espaço em branco.
-ou-
O comprimento de name é zero.
-ou-
O comprimento de name é maior do que o comprimento máximo definido pelo sistema.
-ou-
.NET Framework apenas: Um módulo com o mesmo name já foi definido nesta assembleia.
name é null.
.NET Core e .NET 5+ apenas: Um módulo dinâmico já foi definido nesta assembleia.
O interlocutor não tem a permissão necessária.
O assembly do escritor de símbolos por defeito não pode ser carregado.
-ou-
O tipo que implementa a interface padrão de gravação de símbolos não pode ser encontrado.
Exemplos
O exemplo de código abaixo demonstra como criar um módulo dinâmico transitório usando 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")
Observações
.NET apenas Core e .NET 5+: Assemblies Multi-módulo não são suportados. Apenas um módulo dinâmico pode ser definido numa montagem.
Apenas framework .NET: É um erro definir múltiplos módulos dinâmicos com o mesmo nome numa assembleia.
O módulo dinâmico definido é transitório. O módulo dinâmico não é guardado, mesmo que o conjunto dinâmico pai tenha sido criado com RunAndSave.
Note
Para suprimir otimizações ao depurar módulos dinâmicos, aplique o DebuggableAttribute atributo ao conjunto dinâmico antes de chamar DefineDynamicModule. Cria uma instância de DebuggableAttribute com a DisableOptimizations flag e aplica-a usando o SetCustomAttribute método. O atributo deve ser aplicado à montagem dinâmica. Não tem efeito se aplicado ao módulo.
Aplica-se a
DefineDynamicModule(String, Boolean)
Define um módulo dinâmico transitório nomeado neste conjunto e especifica se deve ser emitida informação de símbolo.
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
O nome do módulo dinâmico.
- emitSymbolInfo
- Boolean
true se a informação do símbolo for emitida; caso contrário, false.
Devoluções
A ModuleBuilder representa o módulo dinâmico definido.
Exceções
name começa com espaço em branco.
-ou-
O comprimento de name é zero.
-ou-
O comprimento de name é maior do que o comprimento máximo definido pelo sistema.
name é null.
O assembly do escritor de símbolos por defeito não pode ser carregado.
-ou-
O tipo que implementa a interface padrão de gravação de símbolos não pode ser encontrado.
O interlocutor não tem a permissão necessária.
Exemplos
O exemplo de código abaixo demonstra como criar um módulo dinâmico transitório usando DefineDynamicModule, suprimindo a informação do símbolo.
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)
Observações
É um erro definir múltiplos módulos dinâmicos com o mesmo nome numa assembleia.
O módulo dinâmico não é guardado, mesmo que o conjunto dinâmico pai tenha sido criado com RunAndSave.
Note
Para suprimir otimizações ao depurar módulos dinâmicos, aplique o DebuggableAttribute atributo ao conjunto dinâmico antes de chamar DefineDynamicModule. Cria uma instância de DebuggableAttribute com a DisableOptimizations flag e aplica-a usando o SetCustomAttribute método. O atributo deve ser aplicado à montagem dinâmica. Não tem efeito se aplicado ao módulo.
Aplica-se a
DefineDynamicModule(String, String)
Define um módulo dinâmico persistente com o nome dado que será guardado no ficheiro especificado. Não é emitida qualquer informação de símbolo.
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
O nome do módulo dinâmico.
- fileName
- String
O nome do ficheiro onde o módulo dinâmico deve ser guardado.
Devoluções
Um objeto que ModuleBuilder representa o módulo dinâmico definido.
Exceções
name ou fileName é null.
O comprimento de name ou fileName é zero.
-ou-
O comprimento de name é maior do que o comprimento máximo definido pelo sistema.
-ou-
fileName contém uma especificação de caminho (um componente de diretório, por exemplo).
-ou-
Há um conflito com o nome de outro ficheiro que pertence a esta assembleia.
Esta assembleia já foi salva anteriormente.
Este conjunto era chamado num conjunto dinâmico com Run atributo.
O interlocutor não tem a permissão necessária.
O assembly do escritor de símbolos por defeito não pode ser carregado.
-ou-
O tipo que implementa a interface padrão de gravação de símbolos não pode ser encontrado.
Exemplos
O exemplo de código abaixo demonstra como criar um módulo dinâmico persistente usando 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")
Observações
Para definir um módulo dinâmico persistente, este conjunto precisa de ser criado com o Save ou o RunAndSave atributo.
Se quiser que o módulo contenha o manifesto assembly, name deve ser o mesmo que o nome do assembly (ou seja, a AssemblyName.Name propriedade usada AssemblyName para criar o assembly dinâmico) e fileName deve ser o mesmo nome do ficheiro que especifica ao guardar o assembly.
Numa assembleia com apenas um módulo, esse módulo deve conter o manifesto da assembleia.
Note
Para suprimir otimizações ao depurar módulos dinâmicos, aplique o DebuggableAttribute atributo ao conjunto dinâmico antes de chamar DefineDynamicModule. Cria uma instância de DebuggableAttribute com a DisableOptimizations flag e aplica-a usando o SetCustomAttribute método. O atributo deve ser aplicado à montagem dinâmica. Não tem efeito se aplicado ao módulo.
Aplica-se a
DefineDynamicModule(String, String, Boolean)
Define um módulo dinâmico persistente, especificando o nome do módulo, o nome do ficheiro para o qual o módulo será guardado, e se a informação do símbolo deve ser emitida usando o gravador de símbolos padrão.
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
O nome do módulo dinâmico.
- fileName
- String
O nome do ficheiro onde o módulo dinâmico deve ser guardado.
- emitSymbolInfo
- Boolean
Se true, a informação simbólica é escrita usando o autor de símbolos padrão.
Devoluções
Um objeto que ModuleBuilder representa o módulo dinâmico definido.
Exceções
name ou fileName é null.
O comprimento de name ou fileName é zero.
-ou-
O comprimento de name é maior do que o comprimento máximo definido pelo sistema.
-ou-
fileName contém uma especificação de caminho (um componente de diretório, por exemplo).
-ou-
Há um conflito com o nome de outro ficheiro que pertence a esta assembleia.
Esta assembleia já foi salva anteriormente.
Este conjunto era chamado de conjunto dinâmico com o Run atributo.
O assembly do escritor de símbolos por defeito não pode ser carregado.
-ou-
O tipo que implementa a interface padrão de gravação de símbolos não pode ser encontrado.
O interlocutor não tem a permissão necessária.
Exemplos
O exemplo de código abaixo demonstra como criar um módulo dinâmico persistente com emissão de símbolos usando 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)
Observações
Para definir um módulo dinâmico persistente, este conjunto precisa de ser criado com o Save ou o RunAndSave atributo.
Se quiser que o módulo contenha o manifesto assembly, name deve ser o mesmo que o nome do assembly (ou seja, a AssemblyName.Name propriedade usada AssemblyName para criar o assembly dinâmico) e fileName deve ser o mesmo nome do ficheiro que especifica ao guardar o assembly.
Numa assembleia com apenas um módulo, esse módulo deve conter o manifesto da assembleia.
Note
Para suprimir otimizações ao depurar módulos dinâmicos, aplique o DebuggableAttribute atributo ao conjunto dinâmico antes de chamar DefineDynamicModule. Cria uma instância de DebuggableAttribute com a DisableOptimizations flag e aplica-a usando o SetCustomAttribute método. O atributo deve ser aplicado à montagem dinâmica. Não tem efeito se aplicado ao módulo.