AssemblyBuilder.DefineDynamicModule Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Definiuje moduł dynamiczny w tym zestawie.
Przeciążenia
DefineDynamicModule(String) |
Definiuje nazwany moduł dynamiczny przejściowy w tym zestawie. |
DefineDynamicModule(String, Boolean) |
Definiuje nazwany moduł dynamiczny przejściowy w tym zestawie i określa, czy mają być emitowane informacje o symbolach. |
DefineDynamicModule(String, String) |
Definiuje trwały moduł dynamiczny o podanej nazwie, która zostanie zapisana w określonym pliku. Żadne informacje o symbolach nie są emitowane. |
DefineDynamicModule(String, String, Boolean) |
Definiuje trwały moduł dynamiczny, określając nazwę modułu, nazwę pliku, do którego zostanie zapisany moduł i czy informacje o symbolach powinny być emitowane przy użyciu domyślnego modułu zapisywania symboli. |
DefineDynamicModule(String)
- Źródło:
- AssemblyBuilder.cs
- Źródło:
- AssemblyBuilder.cs
- Źródło:
- AssemblyBuilder.cs
Definiuje nazwany moduł dynamiczny przejściowy w tym zestawie.
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
Nazwa modułu dynamicznego.
Zwraca
ModuleBuilder reprezentujący zdefiniowany moduł dynamiczny.
Wyjątki
name
zaczyna się od białych znaków.
-lub-
Długość name
wynosi zero.
-lub-
Długość name
jest większa niż maksymalna długość zdefiniowana przez system.
-lub-
Tylko program .NET Framework: moduł z tym samym name
został już zdefiniowany w tym zestawie.
name
jest null
.
Tylko platformy .NET Core i .NET 5+: moduł dynamiczny został już zdefiniowany w tym zestawie.
Obiekt wywołujący nie ma wymaganych uprawnień.
Nie można załadować zestawu domyślnego składnika zapisywania symboli.
-lub-
Nie można odnaleźć typu implementujący domyślny interfejs zapisywania symboli.
Przykłady
W poniższym przykładzie kodu pokazano, jak utworzyć przejściowy moduł dynamiczny przy użyciu 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")
Uwagi
Tylko platformy .NET Core i .NET 5+: zestawy z wieloma modułami nie są obsługiwane. W zestawie można zdefiniować tylko jeden moduł dynamiczny.
Tylko program .NET Framework: Jest to błąd podczas definiowania wielu modułów dynamicznych o tej samej nazwie w zestawie.
Zdefiniowany moduł dynamiczny jest przejściowy. Moduł dynamiczny nie jest zapisywany, nawet jeśli nadrzędny zestaw dynamiczny został utworzony za pomocą RunAndSave.
Nuta
Aby pominąć optymalizacje podczas debugowania modułów dynamicznych, zastosuj atrybut DebuggableAttribute do zestawu dynamicznego przed wywołaniem DefineDynamicModule. Utwórz wystąpienie DebuggableAttribute z flagą DisableOptimizations i zastosuj je przy użyciu metody SetCustomAttribute. Atrybut należy zastosować do zestawu dynamicznego. Nie ma żadnego wpływu, jeśli zastosowano go do modułu.
Nuta
Począwszy od programu .NET Framework 2.0 z dodatkiem Service Pack 1, ten element członkowski nie wymaga już ReflectionPermission z flagą ReflectionPermissionFlag.ReflectionEmit. (Zobacz problemy z zabezpieczeniami wemisji odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa dla programu .NET Framework 3.5 lub nowszego.
Dotyczy
DefineDynamicModule(String, Boolean)
Definiuje nazwany moduł dynamiczny przejściowy w tym zestawie i określa, czy mają być emitowane informacje o symbolach.
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
Nazwa modułu dynamicznego.
- emitSymbolInfo
- Boolean
true
, jeśli informacje o symbolach mają być emitowane; w przeciwnym razie false
.
Zwraca
ModuleBuilder reprezentujący zdefiniowany moduł dynamiczny.
Wyjątki
name
zaczyna się od białych znaków.
-lub-
Długość name
wynosi zero.
-lub-
Długość name
jest większa niż maksymalna długość zdefiniowana przez system.
name
jest null
.
Nie można załadować zestawu domyślnego składnika zapisywania symboli.
-lub-
Nie można odnaleźć typu implementujący domyślny interfejs zapisywania symboli.
Obiekt wywołujący nie ma wymaganych uprawnień.
Przykłady
W poniższym przykładzie kodu pokazano, jak utworzyć przejściowy moduł dynamiczny przy użyciu DefineDynamicModule
, pomijając informacje o symbolach.
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)
Uwagi
Jest to błąd podczas definiowania wielu modułów dynamicznych o tej samej nazwie w zestawie.
Moduł dynamiczny nie jest zapisywany, nawet jeśli nadrzędny zestaw dynamiczny został utworzony za pomocą RunAndSave.
Nuta
Aby pominąć optymalizacje podczas debugowania modułów dynamicznych, zastosuj atrybut DebuggableAttribute do zestawu dynamicznego przed wywołaniem DefineDynamicModule. Utwórz wystąpienie DebuggableAttribute z flagą DisableOptimizations i zastosuj je przy użyciu metody SetCustomAttribute. Atrybut należy zastosować do zestawu dynamicznego. Nie ma żadnego wpływu, jeśli zastosowano go do modułu.
Nuta
Począwszy od programu .NET Framework 2.0 z dodatkiem Service Pack 1, ten element członkowski nie wymaga już ReflectionPermission z flagą ReflectionPermissionFlag.ReflectionEmit. (Zobacz problemy z zabezpieczeniami wemisji odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa dla programu .NET Framework 3.5 lub nowszego.
Dotyczy
DefineDynamicModule(String, String)
Definiuje trwały moduł dynamiczny o podanej nazwie, która zostanie zapisana w określonym pliku. Żadne informacje o symbolach nie są emitowane.
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
Nazwa modułu dynamicznego.
- fileName
- String
Nazwa pliku, do którego ma zostać zapisany moduł dynamiczny.
Zwraca
Obiekt ModuleBuilder reprezentujący zdefiniowany moduł dynamiczny.
Wyjątki
name
lub fileName
jest null
.
Długość name
lub fileName
wynosi zero.
-lub-
Długość name
jest większa niż maksymalna długość zdefiniowana przez system.
-lub-
fileName
zawiera specyfikację ścieżki (na przykład składnik katalogu).
-lub-
Występuje konflikt z nazwą innego pliku, który należy do tego zestawu.
Ten zestaw został wcześniej zapisany.
Ten zestaw został wywołany w zestawie dynamicznym z atrybutem Run.
Obiekt wywołujący nie ma wymaganych uprawnień.
Nie można załadować zestawu domyślnego składnika zapisywania symboli.
-lub-
Nie można odnaleźć typu implementujący domyślny interfejs zapisywania symboli.
Przykłady
W poniższym przykładzie kodu pokazano, jak utworzyć trwały moduł dynamiczny przy użyciu 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")
Uwagi
Aby zdefiniować trwały moduł dynamiczny, należy utworzyć ten zestaw za pomocą Save lub atrybutu RunAndSave.
Jeśli chcesz, aby moduł zawierał manifest zestawu, name
powinien być taki sam jak nazwa zestawu (czyli właściwość AssemblyName.NameAssemblyName użyta do utworzenia zestawu dynamicznego) i fileName
powinna być taka sama jak nazwa pliku określona podczas zapisywania zestawu.
W zestawie z tylko jednym modułem ten moduł powinien zawierać manifest zestawu.
Nuta
Aby pominąć optymalizacje podczas debugowania modułów dynamicznych, zastosuj atrybut DebuggableAttribute do zestawu dynamicznego przed wywołaniem DefineDynamicModule. Utwórz wystąpienie DebuggableAttribute z flagą DisableOptimizations i zastosuj je przy użyciu metody SetCustomAttribute. Atrybut należy zastosować do zestawu dynamicznego. Nie ma żadnego wpływu, jeśli zastosowano go do modułu.
Nuta
Począwszy od programu .NET Framework 2.0 z dodatkiem Service Pack 1, ten element członkowski nie wymaga już ReflectionPermission z flagą ReflectionPermissionFlag.ReflectionEmit. (Zobacz problemy z zabezpieczeniami wemisji odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa dla programu .NET Framework 3.5 lub nowszego.
Dotyczy
DefineDynamicModule(String, String, Boolean)
Definiuje trwały moduł dynamiczny, określając nazwę modułu, nazwę pliku, do którego zostanie zapisany moduł i czy informacje o symbolach powinny być emitowane przy użyciu domyślnego modułu zapisywania symboli.
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
Nazwa modułu dynamicznego.
- fileName
- String
Nazwa pliku, do którego ma zostać zapisany moduł dynamiczny.
- emitSymbolInfo
- Boolean
Jeśli true
, informacje symboliczne są zapisywane przy użyciu domyślnego składnika zapisywania symboli.
Zwraca
Obiekt ModuleBuilder reprezentujący zdefiniowany moduł dynamiczny.
Wyjątki
name
lub fileName
jest null
.
Długość name
lub fileName
wynosi zero.
-lub-
Długość name
jest większa niż maksymalna długość zdefiniowana przez system.
-lub-
fileName
zawiera specyfikację ścieżki (na przykład składnik katalogu).
-lub-
Występuje konflikt z nazwą innego pliku, który należy do tego zestawu.
Ten zestaw został wcześniej zapisany.
Ten zestaw został wywołany w zestawie dynamicznym z atrybutem Run.
Nie można załadować zestawu domyślnego składnika zapisywania symboli.
-lub-
Nie można odnaleźć typu implementujący domyślny interfejs zapisywania symboli.
Obiekt wywołujący nie ma wymaganych uprawnień.
Przykłady
W poniższym przykładzie kodu pokazano, jak utworzyć trwały moduł dynamiczny z emisją symboli przy użyciu 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)
Uwagi
Aby zdefiniować trwały moduł dynamiczny, należy utworzyć ten zestaw za pomocą Save lub atrybutu RunAndSave.
Jeśli chcesz, aby moduł zawierał manifest zestawu, name
powinien być taki sam jak nazwa zestawu (czyli właściwość AssemblyName.NameAssemblyName użyta do utworzenia zestawu dynamicznego) i fileName
powinna być taka sama jak nazwa pliku określona podczas zapisywania zestawu.
W zestawie z tylko jednym modułem ten moduł powinien zawierać manifest zestawu.
Nuta
Aby pominąć optymalizacje podczas debugowania modułów dynamicznych, zastosuj atrybut DebuggableAttribute do zestawu dynamicznego przed wywołaniem DefineDynamicModule. Utwórz wystąpienie DebuggableAttribute z flagą DisableOptimizations i zastosuj je przy użyciu metody SetCustomAttribute. Atrybut należy zastosować do zestawu dynamicznego. Nie ma żadnego wpływu, jeśli zastosowano go do modułu.
Nuta
Począwszy od programu .NET Framework 2.0 z dodatkiem Service Pack 1, ten element członkowski nie wymaga już ReflectionPermission z flagą ReflectionPermissionFlag.ReflectionEmit. (Zobacz problemy z zabezpieczeniami wemisji odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa dla programu .NET Framework 3.5 lub nowszego.