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 se mají vysílat informace o symbolech.

DefineDynamicModule(String, String)

Definuje trvalý dynamický modul s daným názvem, který se uloží do zadaného souboru. Negenerují se žádné informace o symbolech.

DefineDynamicModule(String, String, Boolean)

Definuje trvalý dynamický modul a určuje název modulu, název souboru, do kterého bude modul uložen, a zda mají být informace o symbolech generovány 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

A ModuleBuilder představující definovaný dynamický modul.

Výjimky

name začíná prázdným znakem.

-nebo-

Délka je name nula.

-nebo-

Délka parametru name je větší než maximální délka definovaná systémem.

name je null.

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ů, nebyl nalezen.

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

Definování více dynamických modulů se stejným názvem v sestavení je chybou.

Definovaný dynamický modul je přechodný. Dynamický modul se neuloží, a to ani v případě, že nadřazené dynamické sestavení bylo vytvořeno pomocí RunAndSave.

Poznámka

Chcete-li potlačit optimalizace při ladění dynamických modulů, použijte DebuggableAttribute atribut na dynamické sestavení před voláním DefineDynamicModule. Create instanci DebuggableAttribute s příznakem DisableOptimizations a použijte ji pomocí SetCustomAttribute metody . Atribut musí být použit na dynamické sestavení. Pokud se použije na modul, nemá žádný vliv.

Poznámka

Počínaje .NET Framework 2.0 Service Pack 1 už tento člen nevyžaduje ReflectionPermission s příznakem ReflectionPermissionFlag.ReflectionEmit . (Viz Problémy se zabezpečením v emitu reflexe.) Pokud chcete tuto funkci používat, 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 se mají vysílat 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í vysílat informace o symbolu; v opačném případě . false

Návraty

A ModuleBuilder představující definovaný dynamický modul.

Výjimky

name začíná prázdným znakem.

-nebo-

Délka je name nula.

-nebo-

Délka parametru 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ů, nebyl nalezen.

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čování informací o symbolu.

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

Definování více dynamických modulů se stejným názvem v sestavení je chybou.

Dynamický modul se neuloží, a to ani v případě, že nadřazené dynamické sestavení bylo vytvořeno pomocí RunAndSave.

Poznámka

Chcete-li potlačit optimalizace při ladění dynamických modulů, použijte DebuggableAttribute atribut na dynamické sestavení před voláním DefineDynamicModule. Create instanci DebuggableAttribute s příznakem DisableOptimizations a použijte ji pomocí SetCustomAttribute metody . Atribut musí být použit na dynamické sestavení. Pokud se použije na modul, nemá žádný vliv.

Poznámka

Počínaje .NET Framework 2.0 Service Pack 1 už tento člen nevyžaduje ReflectionPermission s příznakem ReflectionPermissionFlag.ReflectionEmit . (Viz Problémy se zabezpečením v emitu reflexe.) Pokud chcete tuto funkci používat, 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. Negenerují se žá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 má být dynamický modul uložen.

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 parametru name je větší než maximální délka definovaná systémem.

-nebo-

fileName obsahuje specifikaci cesty (například komponentu 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 v dynamickém 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ů, nebyl nalezen.

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

Chcete-li definovat trvalý dynamický modul, musí být toto sestavení vytvořeno s atributem SaveRunAndSave nebo.

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

Poznámka

Počínaje .NET Framework 2.0 Service Pack 1 už tento člen nevyžaduje ReflectionPermission s příznakem ReflectionPermissionFlag.ReflectionEmit . (Viz Problémy se zabezpečením v emitu reflexe.) Pokud chcete tuto funkci používat, 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 a určuje název modulu, název souboru, do kterého bude modul uložen, a zda mají být informace o symbolech generovány 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 má být dynamický modul uložen.

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 parametru name je větší než maximální délka definovaná systémem.

-nebo-

fileName obsahuje specifikaci cesty (například komponentu 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 v dynamickém sestavení s atributem Run .

Sestavení pro výchozí zapisovač symbolů nelze načíst.

-nebo-

Typ, který implementuje výchozí rozhraní pro zápis symbolů, nebyl nalezen.

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

Chcete-li definovat trvalý dynamický modul, musí být toto sestavení vytvořeno s atributem SaveRunAndSave nebo.

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

Poznámka

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

Platí pro