AssemblyBuilder.DefineDynamicModule Méthode

Définition

Définit un module dynamique dans cet assembly.

Surcharges

DefineDynamicModule(String)

Définit un module dynamique transitoire nommé dans cet assembly.

DefineDynamicModule(String, Boolean)

Définit un module dynamique transitoire nommé dans cet assembly et spécifie si des informations de symboles doivent être émises.

DefineDynamicModule(String, String)

Définit un module dynamique persistant avec le nom donné à enregistrer dans le fichier spécifié. Aucune information de symbole n’est émise.

DefineDynamicModule(String, String, Boolean)

Définit un module dynamique persistant, en spécifiant le nom du module, le nom du fichier dans lequel le module doit être enregistré et si les informations de symbole doivent être émises à l’aide du writer de symbole par défaut.

DefineDynamicModule(String)

Source:
AssemblyBuilder.cs
Source:
AssemblyBuilder.cs
Source:
AssemblyBuilder.cs

Définit un module dynamique transitoire nommé dans cet 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

Paramètres

name
String

Nom du module dynamique.

Retours

ModuleBuilder représentant le module dynamique défini.

Exceptions

name commence par un espace blanc.

- ou -

La longueur de name est égale à zéro.

- ou -

La longueur de name est supérieure à la longueur maximale définie par le système.

name a la valeur null.

L'appelant n'a pas l'autorisation requise.

L’assembly pour le writer de symbole par défaut ne peut pas être chargé.

- ou -

Le type qui implémente l’interface du writer de symbole par défaut est introuvable.

Exemples

L’exemple de code ci-dessous montre comment créer un module dynamique temporaire à l’aide de 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")

Remarques

Il s’agit d’une erreur de définir plusieurs modules dynamiques portant le même nom dans un assembly.

Le module dynamique défini est temporaire. Le module dynamique n’est pas enregistré, même si l’assembly dynamique parent a été créé avec RunAndSave.

Notes

Pour supprimer les optimisations lors du débogage de modules dynamiques, appliquez l’attribut DebuggableAttribute à l’assembly dynamique avant d’appeler DefineDynamicModule. Créez une instance de avec l’indicateur DebuggableAttributeDisableOptimizations et appliquez-la à l’aide de la SetCustomAttribute méthode . L’attribut doit être appliqué à l’assembly dynamique. Elle n’a aucun effet si elle est appliquée au module.

Notes

À compter du .NET Framework 2.0 Service Pack 1, ce membre n’a plus besoin de ReflectionPermission l’indicateur ReflectionPermissionFlag.ReflectionEmit . (Consultez Problèmes de sécurité dans l’émission de réflexion.) Pour utiliser cette fonctionnalité, votre application doit cibler .NET Framework 3.5 ou version ultérieure.

S’applique à

DefineDynamicModule(String, Boolean)

Définit un module dynamique transitoire nommé dans cet assembly et spécifie si des informations de symboles doivent être émises.

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

Paramètres

name
String

Nom du module dynamique.

emitSymbolInfo
Boolean

true si les informations de symboles doivent être émises ; sinon, false.

Retours

ModuleBuilder représentant le module dynamique défini.

Exceptions

name commence par un espace blanc.

- ou -

La longueur de name est égale à zéro.

- ou -

La longueur de name est supérieure à la longueur maximale définie par le système.

name a la valeur null.

L’assembly pour le writer de symbole par défaut ne peut pas être chargé.

- ou -

Le type qui implémente l’interface du writer de symbole par défaut est introuvable.

L'appelant n'a pas l'autorisation requise.

Exemples

L’exemple de code ci-dessous montre comment créer un module dynamique temporaire à l’aide DefineDynamicModulede , en supprimant les informations de symbole.

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)

Remarques

Il s’agit d’une erreur de définir plusieurs modules dynamiques portant le même nom dans un assembly.

Le module dynamique n’est pas enregistré, même si l’assembly dynamique parent a été créé avec RunAndSave.

Notes

Pour supprimer les optimisations lors du débogage de modules dynamiques, appliquez l’attribut DebuggableAttribute à l’assembly dynamique avant d’appeler DefineDynamicModule. Créez une instance de avec l’indicateur DebuggableAttributeDisableOptimizations et appliquez-la à l’aide de la SetCustomAttribute méthode . L’attribut doit être appliqué à l’assembly dynamique. Elle n’a aucun effet si elle est appliquée au module.

Notes

À compter du .NET Framework 2.0 Service Pack 1, ce membre n’a plus besoin de ReflectionPermission l’indicateur ReflectionPermissionFlag.ReflectionEmit . (Consultez Problèmes de sécurité dans l’émission de réflexion.) Pour utiliser cette fonctionnalité, votre application doit cibler .NET Framework 3.5 ou version ultérieure.

S’applique à

DefineDynamicModule(String, String)

Définit un module dynamique persistant avec le nom donné à enregistrer dans le fichier spécifié. Aucune information de symbole n’est émise.

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

Paramètres

name
String

Nom du module dynamique.

fileName
String

Nom du fichier dans lequel enregistrer le module dynamique.

Retours

Objet ModuleBuilder représentant le module dynamique défini.

Exceptions

name ou fileName est null.

La longueur de name ou fileName est de zéro.

- ou -

La longueur de name est supérieure à la longueur maximale définie par le système.

- ou -

fileName contient une spécification de chemin d’accès (par exemple, un composant de répertoire).

- ou -

Il existe un conflit avec le nom d’un autre fichier appartenant à cet assembly.

Cet assembly a déjà été enregistré.

Cet assembly a été appelé sur un assembly dynamique avec l’attribut Run.

L'appelant n'a pas l'autorisation requise.

L’assembly pour le writer de symbole par défaut ne peut pas être chargé.

- ou -

Le type qui implémente l’interface du writer de symbole par défaut est introuvable.

Exemples

L’exemple de code ci-dessous montre comment créer un module dynamique persistant à l’aide de 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")

Remarques

Pour définir un module dynamique persistant, cet assembly doit être créé avec l’attribut SaveRunAndSave ou .

Si vous souhaitez que le module contienne le manifeste de l’assembly, name doit être identique au nom de l’assembly (c’est-à-dire, la AssemblyName.Name propriété de l’assembly AssemblyName utilisé pour créer l’assembly dynamique) et fileName doit être le même que le nom de fichier que vous spécifiez lors de l’enregistrement de l’assembly.

Dans un assembly avec un seul module, ce module doit contenir le manifeste d’assembly.

Notes

Pour supprimer les optimisations lors du débogage de modules dynamiques, appliquez l’attribut DebuggableAttribute à l’assembly dynamique avant d’appeler DefineDynamicModule. Créez une instance de avec l’indicateur DebuggableAttributeDisableOptimizations et appliquez-la à l’aide de la SetCustomAttribute méthode . L’attribut doit être appliqué à l’assembly dynamique. Elle n’a aucun effet si elle est appliquée au module.

Notes

À compter du .NET Framework 2.0 Service Pack 1, ce membre n’a plus besoin de ReflectionPermission l’indicateur ReflectionPermissionFlag.ReflectionEmit . (Consultez Problèmes de sécurité dans l’émission de réflexion.) Pour utiliser cette fonctionnalité, votre application doit cibler .NET Framework 3.5 ou version ultérieure.

S’applique à

DefineDynamicModule(String, String, Boolean)

Définit un module dynamique persistant, en spécifiant le nom du module, le nom du fichier dans lequel le module doit être enregistré et si les informations de symbole doivent être émises à l’aide du writer de symbole par défaut.

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

Paramètres

name
String

Nom du module dynamique.

fileName
String

Nom du fichier dans lequel enregistrer le module dynamique.

emitSymbolInfo
Boolean

Si la valeur est true, les informations symboliques sont écrites à l’aide du writer de symbole par défaut.

Retours

Objet ModuleBuilder représentant le module dynamique défini.

Exceptions

name ou fileName est null.

La longueur de name ou fileName est de zéro.

- ou -

La longueur de name est supérieure à la longueur maximale définie par le système.

- ou -

fileName contient une spécification de chemin d’accès (par exemple, un composant de répertoire).

- ou -

Il existe un conflit avec le nom d’un autre fichier appartenant à cet assembly.

Cet assembly a déjà été enregistré.

Cet assembly a été appelé sur un assembly dynamique avec l’attribut Run.

L’assembly pour le writer de symbole par défaut ne peut pas être chargé.

- ou -

Le type qui implémente l’interface du writer de symbole par défaut est introuvable.

L'appelant n'a pas l'autorisation requise.

Exemples

L’exemple de code ci-dessous montre comment créer un module dynamique persistant avec émission de symboles à l’aide de 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)

Remarques

Pour définir un module dynamique persistant, cet assembly doit être créé avec l’attribut Save ou RunAndSave .

Si vous souhaitez que le module contienne le manifeste de l’assembly, name doit être identique au nom de l’assembly (c’est-à-dire, la AssemblyName.Name propriété du AssemblyName utilisé pour créer l’assembly dynamique) et fileName doit être le même que le nom de fichier que vous spécifiez lorsque vous enregistrez l’assembly.

Dans un assembly avec un seul module, ce module doit contenir le manifeste de l’assembly.

Notes

Pour supprimer les optimisations lors du débogage de modules dynamiques, appliquez l’attribut DebuggableAttribute à l’assembly dynamique avant d’appeler DefineDynamicModule. Créez une instance de DebuggableAttribute avec l’indicateur DisableOptimizations et appliquez-la à l’aide de la SetCustomAttribute méthode . L’attribut doit être appliqué à l’assembly dynamique. Elle n’a aucun effet si elle est appliquée au module.

Notes

À compter de .NET Framework 2.0 Service Pack 1, ce membre n’a plus besoin ReflectionPermission de l’indicateur ReflectionPermissionFlag.ReflectionEmit . (Consultez Problèmes de sécurité dans l’émission de réflexion.) Pour utiliser cette fonctionnalité, votre application doit cibler .NET Framework 3.5 ou version ultérieure.

S’applique à