Partager via


AssemblyBuilder.DefineDynamicModule Méthode

Définition

Définit un module dynamique dans cet assembly.

Surcharges

DefineDynamicModule(String)

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

DefineDynamicModule(String, Boolean)

Définit un module dynamique temporaire nommé dans cet assembly et spécifie si les informations de symbole doivent être émises.

DefineDynamicModule(String, String)

Définit un module dynamique persistant avec le nom donné qui sera enregistré 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 sera enregistré et si les informations de symbole doivent être émises à l’aide de l’enregistreur de symboles par défaut.

DefineDynamicModule(String)

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

Définit un module dynamique temporaire 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

Un 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.

-ou-

.NET Framework uniquement : un module avec le même name a déjà été défini dans cet assembly.

name est null.

.NET Core et .NET 5+ uniquement : un module dynamique a déjà été défini dans cet assembly.

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

Impossible de charger l’assembly pour l’enregistreur de symboles par défaut.

-ou-

Le type qui implémente l’interface d’enregistreur de symboles 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

.NET Core et .NET 5+ uniquement : assemblys multimodèles ne sont pas pris en charge. Un seul module dynamique peut être défini dans un assembly.

.NET Framework uniquement : il s’agit d’une erreur de définition de 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.

Note

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 de DisableOptimizations et appliquez-la à l’aide de la méthode SetCustomAttribute. L’attribut doit être appliqué à l’assembly dynamique. Elle n’a aucun effet si elle est appliquée au module.

Note

À compter de .NET Framework 2.0 Service Pack 1, ce membre n’a plus besoin de ReflectionPermission avec l’indicateur de 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 temporaire nommé dans cet assembly et spécifie si les informations de symbole 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 symbole doivent être émises ; sinon, false.

Retours

Un 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 est null.

Impossible de charger l’assembly pour l’enregistreur de symboles par défaut.

-ou-

Le type qui implémente l’interface d’enregistreur de symboles 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 de DefineDynamicModule, 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éfinition de 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.

Note

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 de DisableOptimizations et appliquez-la à l’aide de la méthode SetCustomAttribute. L’attribut doit être appliqué à l’assembly dynamique. Elle n’a aucun effet si elle est appliquée au module.

Note

À compter de .NET Framework 2.0 Service Pack 1, ce membre n’a plus besoin de ReflectionPermission avec l’indicateur de 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é qui sera enregistré 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 le module dynamique doit être enregistré.

Retours

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

Exceptions

name ou fileName est null.

La longueur de name ou de fileName est égale à 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 (un composant de répertoire, par exemple).

-ou-

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

Cet assembly a été précédemment enregistré.

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

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

Impossible de charger l’assembly pour l’enregistreur de symboles par défaut.

-ou-

Le type qui implémente l’interface d’enregistreur de symboles 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'Save ou l’attribut RunAndSave.

Si vous souhaitez que le module contienne le manifeste d’assembly, name doit être identique au nom de l’assembly (autrement dit, la propriété AssemblyName.Name de l'AssemblyName utilisée pour créer l’assembly dynamique) et fileName doit être identique au 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 d’assembly.

Note

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 de DisableOptimizations et appliquez-la à l’aide de la méthode SetCustomAttribute. L’attribut doit être appliqué à l’assembly dynamique. Elle n’a aucun effet si elle est appliquée au module.

Note

À compter de .NET Framework 2.0 Service Pack 1, ce membre n’a plus besoin de ReflectionPermission avec l’indicateur de 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 sera enregistré et si les informations de symbole doivent être émises à l’aide de l’enregistreur de symboles 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 le module dynamique doit être enregistré.

emitSymbolInfo
Boolean

Si true, les informations symboliques sont écrites à l’aide de l’enregistreur de symboles par défaut.

Retours

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

Exceptions

name ou fileName est null.

La longueur de name ou de fileName est égale à 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 (un composant de répertoire, par exemple).

-ou-

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

Cet assembly a été précédemment enregistré.

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

Impossible de charger l’assembly pour l’enregistreur de symboles par défaut.

-ou-

Le type qui implémente l’interface d’enregistreur de symboles 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'Save ou l’attribut RunAndSave.

Si vous souhaitez que le module contienne le manifeste d’assembly, name doit être identique au nom de l’assembly (autrement dit, la propriété AssemblyName.Name de l'AssemblyName utilisée pour créer l’assembly dynamique) et fileName doit être identique au 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 d’assembly.

Note

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 de DisableOptimizations et appliquez-la à l’aide de la méthode SetCustomAttribute. L’attribut doit être appliqué à l’assembly dynamique. Elle n’a aucun effet si elle est appliquée au module.

Note

À compter de .NET Framework 2.0 Service Pack 1, ce membre n’a plus besoin de ReflectionPermission avec l’indicateur de 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 à