Condividi tramite


AssemblyBuilder.DefineDynamicModule Metodo

Definizione

Definisce un modulo dinamico in questo assembly.

Overload

DefineDynamicModule(String)

Definisce un modulo dinamico temporaneo denominato in questo assembly.

DefineDynamicModule(String, Boolean)

Definisce un modulo dinamico temporaneo denominato in questo assembly e specifica se le informazioni sui simboli devono essere generate.

DefineDynamicModule(String, String)

Definisce un modulo dinamico persistente con il nome specificato che verrà salvato nel file specificato. Non vengono generate informazioni sui simboli.

DefineDynamicModule(String, String, Boolean)

Definisce un modulo dinamico persistente, specificando il nome del modulo, il nome del file in cui verrà salvato il modulo e se le informazioni sui simboli devono essere generate usando il writer di simboli predefinito.

DefineDynamicModule(String)

Origine:
AssemblyBuilder.cs
Origine:
AssemblyBuilder.cs
Origine:
AssemblyBuilder.cs

Definisce un modulo dinamico temporaneo denominato in questo 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

Parametri

name
String

Nome del modulo dinamico.

Restituisce

Oggetto ModuleBuilder che rappresenta il modulo dinamico definito.

Eccezioni

name inizia con lo spazio vuoto.

-o-

La lunghezza di name è zero.

-o-

La lunghezza di name è maggiore della lunghezza massima definita dal sistema.

-o-

Solo .NET Framework: un modulo con lo stesso name è già stato definito in questo assembly.

name è null.

Solo .NET Core e .NET 5+: un modulo dinamico è già stato definito in questo assembly.

Il chiamante non dispone dell'autorizzazione richiesta.

Impossibile caricare l'assembly per il writer di simboli predefinito.

-o-

Impossibile trovare il tipo che implementa l'interfaccia del writer di simboli predefinita.

Esempio

L'esempio di codice seguente illustra come creare un modulo dinamico temporaneo usando 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")

Commenti

Solo .NET Core e .NET 5+: assembly multimodulo non sono supportati. In un assembly può essere definito un solo modulo dinamico.

Solo .NET Framework: si tratta di un errore per definire più moduli dinamici con lo stesso nome in un assembly.

Il modulo dinamico definito è temporaneo. Il modulo dinamico non viene salvato, anche se l'assembly dinamico padre è stato creato con RunAndSave.

Nota

Per eliminare le ottimizzazioni durante il debug dei moduli dinamici, applicare l'attributo DebuggableAttribute all'assembly dinamico prima di chiamare DefineDynamicModule. Creare un'istanza di DebuggableAttribute con il flag DisableOptimizations e applicarla usando il metodo SetCustomAttribute. L'attributo deve essere applicato all'assembly dinamico. Non ha alcun effetto se applicato al modulo.

Nota

A partire da .NET Framework 2.0 Service Pack 1, questo membro non richiede più ReflectionPermission con il flag ReflectionPermissionFlag.ReflectionEmit. Vedere problemi di sicurezza di in Reflection Emit. Per usare questa funzionalità, l'applicazione deve avere come destinazione .NET Framework 3.5 o versione successiva.

Si applica a

DefineDynamicModule(String, Boolean)

Definisce un modulo dinamico temporaneo denominato in questo assembly e specifica se le informazioni sui simboli devono essere generate.

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

Parametri

name
String

Nome del modulo dinamico.

emitSymbolInfo
Boolean

true se le informazioni sui simboli devono essere generate; in caso contrario, false.

Restituisce

Oggetto ModuleBuilder che rappresenta il modulo dinamico definito.

Eccezioni

name inizia con lo spazio vuoto.

-o-

La lunghezza di name è zero.

-o-

La lunghezza di name è maggiore della lunghezza massima definita dal sistema.

name è null.

Impossibile caricare l'assembly per il writer di simboli predefinito.

-o-

Impossibile trovare il tipo che implementa l'interfaccia del writer di simboli predefinita.

Il chiamante non dispone dell'autorizzazione richiesta.

Esempio

L'esempio di codice seguente illustra come creare un modulo dinamico temporaneo usando DefineDynamicModule, eliminando le informazioni sui simboli.

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)

Commenti

Si tratta di un errore per definire più moduli dinamici con lo stesso nome in un assembly.

Il modulo dinamico non viene salvato, anche se l'assembly dinamico padre è stato creato con RunAndSave.

Nota

Per eliminare le ottimizzazioni durante il debug dei moduli dinamici, applicare l'attributo DebuggableAttribute all'assembly dinamico prima di chiamare DefineDynamicModule. Creare un'istanza di DebuggableAttribute con il flag DisableOptimizations e applicarla usando il metodo SetCustomAttribute. L'attributo deve essere applicato all'assembly dinamico. Non ha alcun effetto se applicato al modulo.

Nota

A partire da .NET Framework 2.0 Service Pack 1, questo membro non richiede più ReflectionPermission con il flag ReflectionPermissionFlag.ReflectionEmit. Vedere problemi di sicurezza di in Reflection Emit. Per usare questa funzionalità, l'applicazione deve avere come destinazione .NET Framework 3.5 o versione successiva.

Si applica a

DefineDynamicModule(String, String)

Definisce un modulo dinamico persistente con il nome specificato che verrà salvato nel file specificato. Non vengono generate informazioni sui simboli.

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

Parametri

name
String

Nome del modulo dinamico.

fileName
String

Nome del file in cui salvare il modulo dinamico.

Restituisce

Oggetto ModuleBuilder che rappresenta il modulo dinamico definito.

Eccezioni

name o fileName è null.

La lunghezza di name o fileName è zero.

-o-

La lunghezza di name è maggiore della lunghezza massima definita dal sistema.

-o-

fileName contiene una specifica del percorso ,ad esempio un componente della directory.

-o-

Esiste un conflitto con il nome di un altro file appartenente a questo assembly.

Questo assembly è stato salvato in precedenza.

Questo assembly è stato chiamato su un assembly dinamico con attributo Run.

Il chiamante non dispone dell'autorizzazione richiesta.

Impossibile caricare l'assembly per il writer di simboli predefinito.

-o-

Impossibile trovare il tipo che implementa l'interfaccia del writer di simboli predefinita.

Esempio

L'esempio di codice seguente illustra come creare un modulo dinamico persistente usando 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")

Commenti

Per definire un modulo dinamico persistente, questo assembly deve essere creato con il Save o l'attributo RunAndSave.

Se si desidera che il modulo contenga il manifesto dell'assembly, name deve corrispondere al nome dell'assembly, ovvero la proprietà AssemblyName.Name dell'AssemblyName utilizzata per creare l'assembly dinamico) e fileName deve corrispondere al nome file specificato quando si salva l'assembly.

In un assembly con un solo modulo, tale modulo deve contenere il manifesto dell'assembly.

Nota

Per eliminare le ottimizzazioni durante il debug dei moduli dinamici, applicare l'attributo DebuggableAttribute all'assembly dinamico prima di chiamare DefineDynamicModule. Creare un'istanza di DebuggableAttribute con il flag DisableOptimizations e applicarla usando il metodo SetCustomAttribute. L'attributo deve essere applicato all'assembly dinamico. Non ha alcun effetto se applicato al modulo.

Nota

A partire da .NET Framework 2.0 Service Pack 1, questo membro non richiede più ReflectionPermission con il flag ReflectionPermissionFlag.ReflectionEmit. Vedere problemi di sicurezza di in Reflection Emit. Per usare questa funzionalità, l'applicazione deve avere come destinazione .NET Framework 3.5 o versione successiva.

Si applica a

DefineDynamicModule(String, String, Boolean)

Definisce un modulo dinamico persistente, specificando il nome del modulo, il nome del file in cui verrà salvato il modulo e se le informazioni sui simboli devono essere generate usando il writer di simboli predefinito.

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

Parametri

name
String

Nome del modulo dinamico.

fileName
String

Nome del file in cui salvare il modulo dinamico.

emitSymbolInfo
Boolean

Se true, le informazioni simbolica sono scritte usando il writer di simboli predefinito.

Restituisce

Oggetto ModuleBuilder che rappresenta il modulo dinamico definito.

Eccezioni

name o fileName è null.

La lunghezza di name o fileName è zero.

-o-

La lunghezza di name è maggiore della lunghezza massima definita dal sistema.

-o-

fileName contiene una specifica del percorso ,ad esempio un componente della directory.

-o-

Esiste un conflitto con il nome di un altro file appartenente a questo assembly.

Questo assembly è stato salvato in precedenza.

Questo assembly è stato chiamato su un assembly dinamico con l'attributo Run.

Impossibile caricare l'assembly per il writer di simboli predefinito.

-o-

Impossibile trovare il tipo che implementa l'interfaccia del writer di simboli predefinita.

Il chiamante non dispone dell'autorizzazione richiesta.

Esempio

L'esempio di codice seguente illustra come creare un modulo dinamico persistente con emissione di simboli usando 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)

Commenti

Per definire un modulo dinamico persistente, questo assembly deve essere creato con il Save o l'attributo RunAndSave.

Se si desidera che il modulo contenga il manifesto dell'assembly, name deve corrispondere al nome dell'assembly, ovvero la proprietà AssemblyName.Name dell'AssemblyName utilizzata per creare l'assembly dinamico) e fileName deve corrispondere al nome file specificato quando si salva l'assembly.

In un assembly con un solo modulo, tale modulo deve contenere il manifesto dell'assembly.

Nota

Per eliminare le ottimizzazioni durante il debug dei moduli dinamici, applicare l'attributo DebuggableAttribute all'assembly dinamico prima di chiamare DefineDynamicModule. Creare un'istanza di DebuggableAttribute con il flag DisableOptimizations e applicarla usando il metodo SetCustomAttribute. L'attributo deve essere applicato all'assembly dinamico. Non ha alcun effetto se applicato al modulo.

Nota

A partire da .NET Framework 2.0 Service Pack 1, questo membro non richiede più ReflectionPermission con il flag ReflectionPermissionFlag.ReflectionEmit. Vedere problemi di sicurezza di in Reflection Emit. Per usare questa funzionalità, l'applicazione deve avere come destinazione .NET Framework 3.5 o versione successiva.

Si applica a