AssemblyBuilder.DefineDynamicModule Metodo

Definizione

Definisce un modulo dinamico nell'assembly.

Overload

DefineDynamicModule(String)

Definisce un modulo dinamico temporaneo denominato in questo assembly.

DefineDynamicModule(String, Boolean)

Definisce un modulo dinamico temporaneo denominato nell'assembly e specifica se le informazioni sui simboli devono essere emesse.

DefineDynamicModule(String, String)

Definisce un modulo dinamico persistente con il nome specificato che sarà salvato nel file specificato. Non vengono emesse 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 uno spazio vuoto.

-oppure-

La lunghezza di name è zero.

-oppure-

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

name è null.

Il chiamante non dispone dell'autorizzazione richiesta.

L'assembly per il writer di simboli predefinito non può essere caricato.

-oppure-

Non è possibile trovare il tipo che implementa l'interfaccia del writer di simboli predefinito.

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

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 di moduli dinamici, applicare l'attributo all'assembly DebuggableAttribute dinamico prima di chiamare DefineDynamicModule. Create un'istanza di DebuggableAttribute con il DisableOptimizations flag e applicarla usando il SetCustomAttribute metodo . 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 ReflectionPermission più con il ReflectionPermissionFlag.ReflectionEmit flag. Vedere Problemi di sicurezza in Reflection Emit. Per usare questa funzionalità, l'applicazione deve essere destinato a .NET Framework 3.5 o versione successiva.

Si applica a

DefineDynamicModule(String, Boolean)

Definisce un modulo dinamico temporaneo denominato nell'assembly e specifica se le informazioni sui simboli devono essere emesse.

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 emesse; in caso contrario, false.

Restituisce

Oggetto ModuleBuilder che rappresenta il modulo dinamico definito.

Eccezioni

name inizia con uno spazio vuoto.

-oppure-

La lunghezza di name è zero.

-oppure-

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

name è null.

L'assembly per il writer di simboli predefinito non può essere caricato.

-oppure-

Non è possibile trovare il tipo che implementa l'interfaccia del writer di simboli predefinito.

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 di moduli dinamici, applicare l'attributo all'assembly DebuggableAttribute dinamico prima di chiamare DefineDynamicModule. Create un'istanza di DebuggableAttribute con il DisableOptimizations flag e applicarla usando il SetCustomAttribute metodo . 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 ReflectionPermission più con il ReflectionPermissionFlag.ReflectionEmit flag. Vedere Problemi di sicurezza in Reflection Emit. Per usare questa funzionalità, l'applicazione deve essere destinato a .NET Framework 3.5 o versione successiva.

Si applica a

DefineDynamicModule(String, String)

Definisce un modulo dinamico persistente con il nome specificato che sarà salvato nel file specificato. Non vengono emesse 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 con cui deve essere salvato il modulo dinamico.

Restituisce

Oggetto ModuleBuilder che rappresenta il modulo dinamico definito.

Eccezioni

name o fileName è null.

La lunghezza di name o fileName è zero.

-oppure-

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

-oppure-

fileName contiene una specifica del percorso (ad esempio, un componente di directory).

-oppure-

Si verifica un conflitto con il nome di un altro file che appartiene a questo assembly.

Questo assembly è stato salvato in precedenza.

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

Il chiamante non dispone dell'autorizzazione richiesta.

L'assembly per il writer di simboli predefinito non può essere caricato.

-oppure-

Non è possibile trovare il tipo che implementa l'interfaccia del writer di simboli predefinito.

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 l'attributo SaveRunAndSave o .

Se si vuole che il modulo contenga il manifesto dell'assembly, deve essere uguale al nome dell'assembly , name ovvero la AssemblyName.Name proprietà dell'assembly AssemblyName utilizzata per creare l'assembly dinamico, e fileName deve essere uguale al nome 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 di moduli dinamici, applicare l'attributo all'assembly DebuggableAttribute dinamico prima di chiamare DefineDynamicModule. Create un'istanza di DebuggableAttribute con il DisableOptimizations flag e applicarla usando il SetCustomAttribute metodo . 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 ReflectionPermission più con il ReflectionPermissionFlag.ReflectionEmit flag. Vedere Problemi di sicurezza in Reflection Emit. Per usare questa funzionalità, l'applicazione deve essere destinato a .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 con cui deve essere salvato il modulo dinamico.

emitSymbolInfo
Boolean

Se true, le informazioni sui simboli vengono 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.

-oppure-

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

-oppure-

fileName contiene una specifica del percorso (ad esempio, un componente di directory).

-oppure-

Si verifica un conflitto con il nome di un altro file che appartiene a questo assembly.

Questo assembly è stato salvato in precedenza.

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

L'assembly per il writer di simboli predefinito non può essere caricato.

-oppure-

Non è possibile trovare il tipo che implementa l'interfaccia del writer di simboli predefinito.

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 l'attributo SaveRunAndSave o .

Se si desidera che il modulo contenga il manifesto dell'assembly, name deve essere uguale al nome dell'assembly , ovvero la AssemblyName.Name proprietà dell'oggetto AssemblyName usato per creare l'assembly dinamico, e fileName deve essere uguale 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 di moduli dinamici, applicare l'attributo all'assembly DebuggableAttribute dinamico prima di chiamare DefineDynamicModule. Create un'istanza di DebuggableAttribute con il DisableOptimizations flag e applicarla usando il SetCustomAttribute metodo . 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 ReflectionPermission più con il ReflectionPermissionFlag.ReflectionEmit flag . Vedere Problemi di sicurezza in Reflection Emit. Per usare questa funzionalità, l'applicazione deve avere come destinazione .NET Framework 3.5 o versione successiva.

Si applica a