AssemblyBuilder.DefineDynamicModule Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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.