AssemblyBuilder.DefineDynamicModule Metoda

Definicja

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. Nie są emitowane żadne informacje o symbolach.

DefineDynamicModule(String, String, Boolean)

Definiuje trwały moduł dynamiczny, określając nazwę modułu, nazwę pliku, do którego zostanie zapisany moduł oraz 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

Element ModuleBuilder reprezentujący zdefiniowany moduł dynamiczny.

Wyjątki

name zaczyna się od białych znaków.

-lub-

Długość name to zero.

-lub-

Długość name elementu jest większa niż maksymalna długość zdefiniowana przez system.

name to null.

Obiekt wywołujący nie posiada wymaganych uprawnień.

Nie można załadować zestawu domyślnego składnika zapisywania symboli.

-lub-

Nie można odnaleźć typu, który implementuje domyślny interfejs modułu zapisywania symboli.

Przykłady

W poniższym przykładzie kodu pokazano, jak utworzyć przejściowy moduł dynamiczny przy użyciu polecenia 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

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ą polecenia RunAndSave.

Uwaga

Aby pominąć optymalizacje podczas debugowania modułów dynamicznych, zastosuj DebuggableAttribute atrybut do zestawu dynamicznego przed wywołaniem metody DefineDynamicModule. Twórca wystąpienie DebuggableAttribute elementu z flagą DisableOptimizations i zastosuj je przy użyciu SetCustomAttribute metody . Atrybut musi zostać zastosowany do zestawu dynamicznego. Nie ma on wpływu, jeśli zastosowano go do modułu.

Uwaga

Począwszy od .NET Framework 2.0 z dodatkiem Service Pack 1, ten element członkowski nie wymaga ReflectionPermission już flagi ReflectionPermissionFlag.ReflectionEmit . (Zobacz Problemy z zabezpieczeniami w emisji odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa dla .NET Framework 3.5 lub nowszej.

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żeli informacje o symbolu mają być emitowane; w przeciwnym razie , false.

Zwraca

Element ModuleBuilder reprezentujący zdefiniowany moduł dynamiczny.

Wyjątki

name zaczyna się od białych znaków.

-lub-

Długość name to zero.

-lub-

Długość name elementu jest większa niż maksymalna długość zdefiniowana przez system.

name to null.

Nie można załadować zestawu domyślnego składnika zapisywania symboli.

-lub-

Nie można odnaleźć typu, który implementuje domyślny interfejs modułu zapisywania symboli.

Obiekt wywołujący nie posiada wymaganych uprawnień.

Przykłady

W poniższym przykładzie kodu pokazano, jak utworzyć przejściowy moduł dynamiczny przy użyciu funkcji DefineDynamicModulepomijania informacji 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ą polecenia RunAndSave.

Uwaga

Aby pominąć optymalizacje podczas debugowania modułów dynamicznych, zastosuj DebuggableAttribute atrybut do zestawu dynamicznego przed wywołaniem metody DefineDynamicModule. Twórca wystąpienie DebuggableAttribute elementu z flagą DisableOptimizations i zastosuj je przy użyciu SetCustomAttribute metody . Atrybut musi zostać zastosowany do zestawu dynamicznego. Nie ma on wpływu, jeśli zastosowano go do modułu.

Uwaga

Począwszy od .NET Framework 2.0 z dodatkiem Service Pack 1, ten element członkowski nie wymaga ReflectionPermission już flagi ReflectionPermissionFlag.ReflectionEmit . (Zobacz Problemy z zabezpieczeniami w emisji odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa dla .NET Framework 3.5 lub nowszej.

Dotyczy

DefineDynamicModule(String, String)

Definiuje trwały moduł dynamiczny o podanej nazwie, która zostanie zapisana w określonym pliku. Nie są emitowane żadne informacje o symbolach.

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

ModuleBuilder Obiekt reprezentujący zdefiniowany moduł dynamiczny.

Wyjątki

name lub fileName ma wartość null.

Długość wartości lub fileName jest równa name zero.

-lub-

Długość name elementu 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 posiada wymaganych uprawnień.

Nie można załadować zestawu domyślnego składnika zapisywania symboli.

-lub-

Nie można odnaleźć typu, który implementuje domyślny interfejs modułu zapisywania symboli.

Przykłady

W poniższym przykładzie kodu pokazano, jak utworzyć trwały moduł dynamiczny przy użyciu polecenia 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ą atrybutu SaveRunAndSave lub .

Jeśli chcesz, aby moduł zawierał manifest zestawu, name powinien być taki sam jak nazwa zestawu (czyli AssemblyName.Name właściwość AssemblyName 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.

Uwaga

Aby pominąć optymalizacje podczas debugowania modułów dynamicznych, zastosuj DebuggableAttribute atrybut do zestawu dynamicznego przed wywołaniem metody DefineDynamicModule. Twórca wystąpienie DebuggableAttribute elementu z flagą DisableOptimizations i zastosuj je przy użyciu SetCustomAttribute metody . Atrybut musi zostać zastosowany do zestawu dynamicznego. Nie ma on wpływu, jeśli zastosowano go do modułu.

Uwaga

Począwszy od .NET Framework 2.0 z dodatkiem Service Pack 1, ten element członkowski nie wymaga ReflectionPermission już flagi ReflectionPermissionFlag.ReflectionEmit . (Zobacz Problemy z zabezpieczeniami w emisji odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa dla .NET Framework 3.5 lub nowszej.

Dotyczy

DefineDynamicModule(String, String, Boolean)

Definiuje trwały moduł dynamiczny, określając nazwę modułu, nazwę pliku, do którego zostanie zapisany moduł oraz 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

ModuleBuilder Obiekt reprezentujący zdefiniowany moduł dynamiczny.

Wyjątki

name lub fileName ma wartość null.

Długość wartości lub fileName jest równa name zero.

-lub-

Długość name elementu 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 za pomocą atrybutu Run .

Nie można załadować zestawu domyślnego składnika zapisywania symboli.

-lub-

Nie można odnaleźć typu, który implementuje domyślny interfejs modułu zapisywania symboli.

Obiekt wywołujący nie posiada wymaganych uprawnień.

Przykłady

W poniższym przykładzie kodu pokazano, jak utworzyć trwały moduł dynamiczny z emisją symboli przy użyciu polecenia 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ą atrybutu SaveRunAndSave lub .

Jeśli chcesz, aby moduł zawierał manifest zestawu, name powinien być taki sam jak nazwa zestawu (czyli AssemblyName.Name właściwość AssemblyName 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.

Uwaga

Aby pominąć optymalizacje podczas debugowania modułów dynamicznych, zastosuj DebuggableAttribute atrybut do zestawu dynamicznego przed wywołaniem metody DefineDynamicModule. Twórca wystąpienie DebuggableAttribute elementu z flagą DisableOptimizations i zastosuj je przy użyciu SetCustomAttribute metody . Atrybut musi zostać zastosowany do zestawu dynamicznego. Nie ma on wpływu, jeśli zastosowano go do modułu.

Uwaga

Począwszy od .NET Framework 2.0 z dodatkiem Service Pack 1, ten element członkowski nie wymaga ReflectionPermission już flagi ReflectionPermissionFlag.ReflectionEmit . (Zobacz Problemy z zabezpieczeniami w emisji odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa dla .NET Framework 3.5 lub nowszej.

Dotyczy