Sdílet prostřednictvím


AssemblyBuilder.DefineDynamicModule Metoda

Definice

Definuje dynamický modul v tomto sestavení.

Přetížení

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

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

ModuleBuilder představující 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: Modul se stejným name již byl v tomto sestavení definován.

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 = 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")

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 atribut DebuggableAttribute na dynamické sestavení . Vytvořte instanci DebuggableAttribute s příznakem DisableOptimizations a použijte ji pomocí metody SetCustomAttribute. Atribut musí být použit pro dynamické sestavení. Nemá žádný vliv, pokud se použije na modul.

Poznámka

Počínaje aktualizací Service Pack 1 rozhraní .NET Framework 2.0 už tento člen nevyžaduje ReflectionPermission s příznakem ReflectionPermissionFlag.ReflectionEmit. (Viz problémy se zabezpečením vgenerování reflexe.) Pokud chcete tuto funkci použít, měla by vaše aplikace cílit na rozhraní .NET Framework 3.5 nebo novější.

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

true, pokud se mají vygenerovat informace o symbolech; jinak false.

Návraty

ModuleBuilder představující 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í DefineDynamicModule, potlačení informací o symbolech.

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)

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 atribut DebuggableAttribute na dynamické sestavení . Vytvořte instanci DebuggableAttribute s příznakem DisableOptimizations a použijte ji pomocí metody SetCustomAttribute. Atribut musí být použit pro dynamické sestavení. Nemá žádný vliv, pokud se použije na modul.

Poznámka

Počínaje aktualizací Service Pack 1 rozhraní .NET Framework 2.0 už tento člen nevyžaduje ReflectionPermission s příznakem ReflectionPermissionFlag.ReflectionEmit. (Viz problémy se zabezpečením vgenerování reflexe.) Pokud chcete tuto funkci použít, měla by vaše aplikace cílit na rozhraní .NET Framework 3.5 nebo novější.

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 = 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")

Poznámky

Pokud chcete definovat trvalý dynamický modul, musí být toto sestavení vytvořeno pomocí Save nebo atributu RunAndSave.

Pokud chcete, aby modul obsahoval manifest sestavení, name by měl být stejný jako název sestavení (tj. AssemblyName.Name vlastnost AssemblyName použitá k vytvoření dynamického sestavení) a fileName by měla být stejná jako název souboru, 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 atribut DebuggableAttribute na dynamické sestavení . Vytvořte instanci DebuggableAttribute s příznakem DisableOptimizations a použijte ji pomocí metody SetCustomAttribute. Atribut musí být použit pro dynamické sestavení. Nemá žádný vliv, pokud se použije na modul.

Poznámka

Počínaje aktualizací Service Pack 1 rozhraní .NET Framework 2.0 už tento člen nevyžaduje ReflectionPermission s příznakem ReflectionPermissionFlag.ReflectionEmit. (Viz problémy se zabezpečením vgenerování reflexe.) Pokud chcete tuto funkci použít, měla by vaše aplikace cílit na rozhraní .NET Framework 3.5 nebo novější.

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 true, symbolické informace se 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 = 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)

Poznámky

Pokud chcete definovat trvalý dynamický modul, musí být toto sestavení vytvořeno pomocí Save nebo atributu RunAndSave.

Pokud chcete, aby modul obsahoval manifest sestavení, name by měl být stejný jako název sestavení (tj. AssemblyName.Name vlastnost AssemblyName použitá k vytvoření dynamického sestavení) a fileName by měla být stejná jako název souboru, 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 atribut DebuggableAttribute na dynamické sestavení . Vytvořte instanci DebuggableAttribute s příznakem DisableOptimizations a použijte ji pomocí metody SetCustomAttribute. Atribut musí být použit pro dynamické sestavení. Nemá žádný vliv, pokud se použije na modul.

Poznámka

Počínaje aktualizací Service Pack 1 rozhraní .NET Framework 2.0 už tento člen nevyžaduje ReflectionPermission s příznakem ReflectionPermissionFlag.ReflectionEmit. (Viz problémy se zabezpečením vgenerování reflexe.) Pokud chcete tuto funkci použít, měla by vaše aplikace cílit na rozhraní .NET Framework 3.5 nebo novější.

Platí pro