AssemblyBuilder.DefineDynamicModule Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Define um módulo dinâmico neste assembly.
Sobrecargas
| Nome | Description |
|---|---|
| DefineDynamicModule(String) |
Define um módulo dinâmico transitório nomeado neste assembly. |
| DefineDynamicModule(String, Boolean) |
Define um módulo dinâmico transitório nomeado neste assembly e especifica se as informações de símbolo devem ser emitidas. |
| DefineDynamicModule(String, String) |
Define um módulo dinâmico persistente com o nome fornecido que será salvo no arquivo especificado. Nenhuma informação de símbolo é emitida. |
| DefineDynamicModule(String, String, Boolean) |
Define um módulo dinâmico persistente, especificando o nome do módulo, o nome do arquivo para o qual o módulo será salvo e se as informações de símbolo devem ser emitidas usando o gravador de símbolo padrão. |
DefineDynamicModule(String)
- Origem:
- AssemblyBuilder.cs
- Origem:
- AssemblyBuilder.cs
- Origem:
- AssemblyBuilder.cs
- Origem:
- AssemblyBuilder.cs
- Origem:
- AssemblyBuilder.cs
Define um módulo dinâmico transitório nomeado neste assembly.
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.
Retornos
Um ModuleBuilder que representa o módulo dinâmico definido.
Exceções
name começa com espaço em branco.
-ou-
O comprimento é name zero.
-ou-
O comprimento é name maior que o comprimento máximo definido pelo sistema.
-ou-
Somente .NET Framework: um módulo com o mesmo name já foi definido neste assembly.
name é null.
Somente .NET Core e .NET 5+: um módulo dinâmico já foi definido neste assembly.
O chamador não tem a permissão necessária.
O assembly do gravador de símbolo padrão não pode ser carregado.
-ou-
O tipo que implementa a interface de gravador de símbolo padrão 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")
Comentários
Somente .NET Core e .NET 5+: não há suporte para assemblies de vários módulos. Somente um módulo dinâmico pode ser definido em um assembly.
Somente .NET Framework: é um erro definir vários módulos dinâmicos com o mesmo nome em um assembly.
O módulo dinâmico definido é transitório. O módulo dinâmico não é salvo, mesmo que o assembly dinâmico pai tenha sido criado com RunAndSave.
Nota
Para suprimir otimizações ao depurar módulos dinâmicos, aplique o DebuggableAttribute atributo ao assembly dinâmico antes de chamar DefineDynamicModule. Crie uma instância com DebuggableAttribute o sinalizador e aplique-a DisableOptimizations usando o SetCustomAttribute método. O atributo deve ser aplicado ao assembly dinâmico. Ele não terá efeito se aplicado ao módulo.
Aplica-se a
DefineDynamicModule(String, Boolean)
Define um módulo dinâmico transitório nomeado neste assembly e especifica se as informações de símbolo devem ser emitidas.
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 as informações de símbolo devem ser emitidas; caso contrário, false.
Retornos
Um ModuleBuilder que representa o módulo dinâmico definido.
Exceções
name começa com espaço em branco.
-ou-
O comprimento é name zero.
-ou-
O comprimento é name maior que o comprimento máximo definido pelo sistema.
name é null.
O assembly do gravador de símbolo padrão não pode ser carregado.
-ou-
O tipo que implementa a interface de gravador de símbolo padrão não pode ser encontrado.
O chamador não tem a permissão necessária.
Exemplos
O exemplo de código a seguir demonstra como criar um módulo dinâmico transitório usando DefineDynamicModule, suprimindo informações de 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)
Comentários
É um erro definir vários módulos dinâmicos com o mesmo nome em um assembly.
O módulo dinâmico não é salvo, mesmo que o assembly dinâmico pai tenha sido criado com RunAndSave.
Nota
Para suprimir otimizações ao depurar módulos dinâmicos, aplique o DebuggableAttribute atributo ao assembly dinâmico antes de chamar DefineDynamicModule. Crie uma instância com DebuggableAttribute o sinalizador e aplique-a DisableOptimizations usando o SetCustomAttribute método. O atributo deve ser aplicado ao assembly dinâmico. Ele não terá efeito se aplicado ao módulo.
Aplica-se a
DefineDynamicModule(String, String)
Define um módulo dinâmico persistente com o nome fornecido que será salvo no arquivo especificado. Nenhuma informação de símbolo é emitida.
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 arquivo no qual o módulo dinâmico deve ser salvo.
Retornos
Um ModuleBuilder objeto que representa o módulo dinâmico definido.
Exceções
name ou fileName é null.
O comprimento de name ou fileName é zero.
-ou-
O comprimento é name maior 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 arquivo que pertence a esse assembly.
Esse assembly foi salvo anteriormente.
Esse assembly foi chamado em um assembly dinâmico com Run atributo.
O chamador não tem a permissão necessária.
O assembly do gravador de símbolo padrão não pode ser carregado.
-ou-
O tipo que implementa a interface de gravador de símbolo padrão 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")
Comentários
Para definir um módulo dinâmico persistente, esse assembly precisa ser criado com o Save atributo ou o RunAndSave atributo.
Se você quiser que o módulo contenha o manifesto do assembly, name deverá ser o mesmo que o nome do assembly (ou seja, a AssemblyName.Name propriedade do AssemblyName usado para criar o assembly dinâmico) e fileName deverá ser igual ao nome do arquivo especificado ao salvar o assembly.
Em um assembly com apenas um módulo, esse módulo deve conter o manifesto do assembly.
Nota
Para suprimir otimizações ao depurar módulos dinâmicos, aplique o DebuggableAttribute atributo ao assembly dinâmico antes de chamar DefineDynamicModule. Crie uma instância com DebuggableAttribute o sinalizador e aplique-a DisableOptimizations usando o SetCustomAttribute método. O atributo deve ser aplicado ao assembly dinâmico. Ele não terá 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 arquivo para o qual o módulo será salvo e se as informações de símbolo devem ser emitidas usando o gravador de símbolo 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 arquivo no qual o módulo dinâmico deve ser salvo.
- emitSymbolInfo
- Boolean
Se trueas informações simbólicas forem gravadas usando o gravador de símbolos padrão.
Retornos
Um ModuleBuilder objeto que representa o módulo dinâmico definido.
Exceções
name ou fileName é null.
O comprimento de name ou fileName é zero.
-ou-
O comprimento é name maior 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 arquivo que pertence a esse assembly.
Esse assembly foi salvo anteriormente.
Esse assembly foi chamado em um assembly dinâmico com o Run atributo.
O assembly do gravador de símbolo padrão não pode ser carregado.
-ou-
O tipo que implementa a interface de gravador de símbolo padrão não pode ser encontrado.
O chamador 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ímbolo 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)
Comentários
Para definir um módulo dinâmico persistente, esse assembly precisa ser criado com o Save atributo ou o RunAndSave atributo.
Se você quiser que o módulo contenha o manifesto do assembly, name deverá ser o mesmo que o nome do assembly (ou seja, a AssemblyName.Name propriedade do AssemblyName usado para criar o assembly dinâmico) e fileName deverá ser igual ao nome do arquivo especificado ao salvar o assembly.
Em um assembly com apenas um módulo, esse módulo deve conter o manifesto do assembly.
Nota
Para suprimir otimizações ao depurar módulos dinâmicos, aplique o DebuggableAttribute atributo ao assembly dinâmico antes de chamar DefineDynamicModule. Crie uma instância com DebuggableAttribute o sinalizador e aplique-a DisableOptimizations usando o SetCustomAttribute método. O atributo deve ser aplicado ao assembly dinâmico. Ele não terá efeito se aplicado ao módulo.