Sdílet prostřednictvím


AssemblyBuilder.DefineDynamicModule Metoda

Definice

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.

Platí pro