AssemblyBuilder.DefineDynamicModule Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Definuje dynamický modul v tomto sestavení.
Přetížení
| Name | Description |
|---|---|
| DefineDynamicModule(String) |
Definuje pojmenovaný přechodný dynamický modul v tomto sestavení. |
| DefineDynamicModule(String, Boolean) |
Definuje pojmenovaný přechodný dynamický modul v tomto sestavení a určuje, zda mají být generovány informace o symbolech. |
| DefineDynamicModule(String, String) |
Definuje trvalý dynamický modul s daným názvem, který se uloží do zadaného souboru. Nejsou generovány žádné informace o symbolech. |
| DefineDynamicModule(String, String, Boolean) |
Definuje trvalý dynamický modul, určuje název modulu, název souboru, do kterého se modul uloží, a určuje, jestli se mají informace o symbolech vygenerovat pomocí výchozího zapisovače symbolů. |
DefineDynamicModule(String)
- Zdroj:
- AssemblyBuilder.cs
- Zdroj:
- AssemblyBuilder.cs
- Zdroj:
- AssemblyBuilder.cs
- Zdroj:
- AssemblyBuilder.cs
- Zdroj:
- AssemblyBuilder.cs
Definuje pojmenovaný přechodný dynamický modul v tomto sestavení.
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
Parametry
- name
- String
Název dynamického modulu.
Návraty
Představuje ModuleBuilder definovaný dynamický modul.
Výjimky
name začíná prázdným znakem.
-nebo-
Délka name je nula.
-nebo-
Délka name je větší než maximální délka definovaná systémem.
-nebo-
Pouze rozhraní .NET Framework: V tomto sestavení již byl definován modul se stejným name modulem.
name je null.
Pouze .NET Core a .NET 5+: Dynamický modul již byl v tomto sestavení definován.
Volající nemá požadované oprávnění.
Sestavení pro výchozí zapisovač symbolů nelze načíst.
-nebo-
Typ, který implementuje výchozí rozhraní pro zápis symbolů, nelze najít.
Příklady
Následující příklad kódu ukazuje, jak vytvořit přechodný dynamický modul pomocí DefineDynamicModule.
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")
Poznámky
Pouze .NET Core a .NET 5+: Sestavení s více moduly nejsou podporována. V sestavení může být definován pouze jeden dynamický modul.
Pouze rozhraní .NET Framework: Jedná se o chybu při definování více dynamických modulů se stejným názvem v sestavení.
Definovaný dynamický modul je přechodný. Dynamický modul není uložen, i když bylo vytvořeno nadřazené dynamické sestavení s RunAndSave.
Poznámka
Chcete-li potlačit optimalizace při ladění dynamických modulů, před voláním DefineDynamicModulepoužijte DebuggableAttribute atribut na dynamické sestavení . Vytvořte instanci DebuggableAttribute příznaku DisableOptimizations a použijte ji pomocí SetCustomAttribute metody. Atribut musí být použit pro dynamické sestavení. Nemá žádný vliv, pokud se použije na modul.
Platí pro
DefineDynamicModule(String, Boolean)
Definuje pojmenovaný přechodný dynamický modul v tomto sestavení a určuje, zda mají být generovány informace o symbolech.
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
Parametry
- name
- String
Název dynamického modulu.
- emitSymbolInfo
- Boolean
truepokud se mají vygenerovat informace o symbolech; v opačném případě . false
Návraty
Představuje ModuleBuilder definovaný dynamický modul.
Výjimky
name začíná prázdným znakem.
-nebo-
Délka name je nula.
-nebo-
Délka name je větší než maximální délka definovaná systémem.
name je null.
Sestavení pro výchozí zapisovač symbolů nelze načíst.
-nebo-
Typ, který implementuje výchozí rozhraní pro zápis symbolů, nelze najít.
Volající nemá požadované oprávnění.
Příklady
Následující příklad kódu ukazuje, jak vytvořit přechodný dynamický modul pomocí DefineDynamicModulepotlačení informací o symbolech.
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)
Poznámky
Jedná se o chybu při definování více dynamických modulů se stejným názvem v sestavení.
Dynamický modul není uložen, i když bylo vytvořeno nadřazené dynamické sestavení s RunAndSave.
Poznámka
Chcete-li potlačit optimalizace při ladění dynamických modulů, před voláním DefineDynamicModulepoužijte DebuggableAttribute atribut na dynamické sestavení . Vytvořte instanci DebuggableAttribute příznaku DisableOptimizations a použijte ji pomocí SetCustomAttribute metody. Atribut musí být použit pro dynamické sestavení. Nemá žádný vliv, pokud se použije na modul.
Platí pro
DefineDynamicModule(String, String)
Definuje trvalý dynamický modul s daným názvem, který se uloží do zadaného souboru. Nejsou generovány žádné informace o symbolech.
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
Parametry
- name
- String
Název dynamického modulu.
- fileName
- String
Název souboru, do kterého se má dynamický modul uložit.
Návraty
Objekt ModuleBuilder představující definovaný dynamický modul.
Výjimky
name nebo fileName je null.
Délka name nebo fileName je nula.
-nebo-
Délka name je větší než maximální délka definovaná systémem.
-nebo-
fileName obsahuje specifikaci cesty (například součást adresáře).
-nebo-
Došlo ke konfliktu s názvem jiného souboru, který patří do tohoto sestavení.
Toto sestavení bylo dříve uloženo.
Toto sestavení bylo volána na dynamické sestavení s atributem Run .
Volající nemá požadované oprávnění.
Sestavení pro výchozí zapisovač symbolů nelze načíst.
-nebo-
Typ, který implementuje výchozí rozhraní pro zápis symbolů, nelze najít.
Příklady
Následující příklad kódu ukazuje, jak vytvořit trvalý dynamický modul pomocí DefineDynamicModule.
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")
Poznámky
Chcete-li definovat trvalý dynamický modul, musí být toto sestavení vytvořeno pomocí Save atributu nebo atributu RunAndSave .
Pokud chcete, aby modul obsahoval manifest sestavení, měl by být stejný jako název sestavení (tjAssemblyName.Name. vlastnost AssemblyName použité k vytvoření dynamického sestavení) a fileName měla by být stejná jako název souboru, name který zadáte při uložení sestavení.
V sestavení s pouze jedním modulem by měl tento modul obsahovat manifest sestavení.
Poznámka
Chcete-li potlačit optimalizace při ladění dynamických modulů, před voláním DefineDynamicModulepoužijte DebuggableAttribute atribut na dynamické sestavení . Vytvořte instanci DebuggableAttribute příznaku DisableOptimizations a použijte ji pomocí SetCustomAttribute metody. Atribut musí být použit pro dynamické sestavení. Nemá žádný vliv, pokud se použije na modul.
Platí pro
DefineDynamicModule(String, String, Boolean)
Definuje trvalý dynamický modul, určuje název modulu, název souboru, do kterého se modul uloží, a určuje, jestli se mají informace o symbolech vygenerovat pomocí výchozího zapisovače symbolů.
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
Parametry
- name
- String
Název dynamického modulu.
- fileName
- String
Název souboru, do kterého se má dynamický modul uložit.
- emitSymbolInfo
- Boolean
Pokud truese symbolické informace zapisuje pomocí výchozího zapisovače symbolů.
Návraty
Objekt ModuleBuilder představující definovaný dynamický modul.
Výjimky
name nebo fileName je null.
Délka name nebo fileName je nula.
-nebo-
Délka name je větší než maximální délka definovaná systémem.
-nebo-
fileName obsahuje specifikaci cesty (například součást adresáře).
-nebo-
Došlo ke konfliktu s názvem jiného souboru, který patří do tohoto sestavení.
Toto sestavení bylo dříve uloženo.
Toto sestavení bylo volána na dynamické sestavení s atributem Run .
Sestavení pro výchozí zapisovač symbolů nelze načíst.
-nebo-
Typ, který implementuje výchozí rozhraní pro zápis symbolů, nelze najít.
Volající nemá požadované oprávnění.
Příklady
Následující příklad kódu ukazuje, jak vytvořit trvalý dynamický modul s emisemi symbolů pomocí DefineDynamicModule.
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)
Poznámky
Chcete-li definovat trvalý dynamický modul, musí být toto sestavení vytvořeno pomocí Save atributu nebo atributu RunAndSave .
Pokud chcete, aby modul obsahoval manifest sestavení, měl by být stejný jako název sestavení (tjAssemblyName.Name. vlastnost AssemblyName použité k vytvoření dynamického sestavení) a fileName měla by být stejná jako název souboru, name který zadáte při uložení sestavení.
V sestavení s pouze jedním modulem by měl tento modul obsahovat manifest sestavení.
Poznámka
Chcete-li potlačit optimalizace při ladění dynamických modulů, před voláním DefineDynamicModulepoužijte DebuggableAttribute atribut na dynamické sestavení . Vytvořte instanci DebuggableAttribute příznaku DisableOptimizations a použijte ji pomocí SetCustomAttribute metody. Atribut musí být použit pro dynamické sestavení. Nemá žádný vliv, pokud se použije na modul.