Bagikan melalui


AssemblyBuilder.DefineDynamicModule Metode

Definisi

Mendefinisikan modul dinamis dalam rakitan ini.

Overload

DefineDynamicModule(String)

Mendefinisikan modul dinamis sementara bernama dalam perakitan ini.

DefineDynamicModule(String, Boolean)

Menentukan modul dinamis sementara bernama dalam perakitan ini dan menentukan apakah informasi simbol harus dipancarkan.

DefineDynamicModule(String, String)

Menentukan modul dinamis yang dapat dipertahankan dengan nama yang diberikan yang akan disimpan ke file yang ditentukan. Tidak ada informasi simbol yang dipancarkan.

DefineDynamicModule(String, String, Boolean)

Menentukan modul dinamis yang tetap, menentukan nama modul, nama file tempat modul akan disimpan, dan apakah informasi simbol harus dipancarkan menggunakan penulis simbol default.

DefineDynamicModule(String)

Sumber:
AssemblyBuilder.cs
Sumber:
AssemblyBuilder.cs
Sumber:
AssemblyBuilder.cs

Mendefinisikan modul dinamis sementara bernama dalam perakitan ini.

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

Parameter

name
String

Nama modul dinamis.

Mengembalikan

mewakili ModuleBuilder modul dinamis yang ditentukan.

Pengecualian

name dimulai dengan spasi kosong.

-atau-

Panjangnya name adalah nol.

-atau-

Panjang name lebih besar dari panjang maksimum yang ditentukan sistem.

nameadalah null.

Pemanggil tidak memiliki izin yang diperlukan.

Rakitan untuk penulis simbol default tidak dapat dimuat.

-atau-

Tipe yang mengimplementasikan antarmuka penulis simbol default tidak dapat ditemukan.

Contoh

Contoh kode di bawah ini menunjukkan cara membuat modul dinamis sementara menggunakan 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")

Keterangan

Ini adalah kesalahan untuk menentukan beberapa modul dinamis dengan nama yang sama dalam perakitan.

Modul dinamis yang ditentukan bersifat sementara. Modul dinamis tidak disimpan, bahkan jika rakitan dinamis induk dibuat dengan RunAndSave.

Catatan

Untuk menekan pengoptimalan saat men-debug modul dinamis, terapkan DebuggableAttribute atribut ke rakitan dinamis sebelum memanggil DefineDynamicModule. Create instans DebuggableAttribute dengan DisableOptimizations bendera dan terapkan menggunakan SetCustomAttribute metode . Atribut harus diterapkan ke rakitan dinamis. Ini tidak berpengaruh jika diterapkan ke modul.

Catatan

Dimulai dengan .NET Framework 2.0 Service Pack 1, anggota ini tidak lagi memerlukan ReflectionPermission dengan ReflectionPermissionFlag.ReflectionEmit bendera . (Lihat Masalah Keamanan dalam Pancaran Pancaran.) Untuk menggunakan fungsionalitas ini, aplikasi Anda harus menargetkan .NET Framework 3.5 atau yang lebih baru.

Berlaku untuk

DefineDynamicModule(String, Boolean)

Menentukan modul dinamis sementara bernama dalam perakitan ini dan menentukan apakah informasi simbol harus dipancarkan.

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

Parameter

name
String

Nama modul dinamis.

emitSymbolInfo
Boolean

true jika informasi simbol akan dipancarkan; jika tidak, false.

Mengembalikan

mewakili ModuleBuilder modul dinamis yang ditentukan.

Pengecualian

name dimulai dengan spasi kosong.

-atau-

Panjangnya name adalah nol.

-atau-

Panjang name lebih besar dari panjang maksimum yang ditentukan sistem.

nameadalah null.

Rakitan untuk penulis simbol default tidak dapat dimuat.

-atau-

Tipe yang mengimplementasikan antarmuka penulis simbol default tidak dapat ditemukan.

Pemanggil tidak memiliki izin yang diperlukan.

Contoh

Contoh kode di bawah ini menunjukkan cara membuat modul dinamis sementara menggunakan DefineDynamicModule, menekan informasi simbol.

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)

Keterangan

Ini adalah kesalahan untuk menentukan beberapa modul dinamis dengan nama yang sama dalam perakitan.

Modul dinamis tidak disimpan, bahkan jika rakitan dinamis induk dibuat dengan RunAndSave.

Catatan

Untuk menekan pengoptimalan saat men-debug modul dinamis, terapkan DebuggableAttribute atribut ke rakitan dinamis sebelum memanggil DefineDynamicModule. Create instans DebuggableAttribute dengan DisableOptimizations bendera dan terapkan menggunakan SetCustomAttribute metode . Atribut harus diterapkan ke rakitan dinamis. Ini tidak berpengaruh jika diterapkan ke modul.

Catatan

Dimulai dengan .NET Framework 2.0 Service Pack 1, anggota ini tidak lagi memerlukan ReflectionPermission dengan ReflectionPermissionFlag.ReflectionEmit bendera . (Lihat Masalah Keamanan dalam Pancaran Pancaran.) Untuk menggunakan fungsionalitas ini, aplikasi Anda harus menargetkan .NET Framework 3.5 atau yang lebih baru.

Berlaku untuk

DefineDynamicModule(String, String)

Menentukan modul dinamis yang dapat dipertahankan dengan nama yang diberikan yang akan disimpan ke file yang ditentukan. Tidak ada informasi simbol yang dipancarkan.

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

Parameter

name
String

Nama modul dinamis.

fileName
String

Nama file tempat modul dinamis harus disimpan.

Mengembalikan

Objek ModuleBuilder yang mewakili modul dinamis yang ditentukan.

Pengecualian

name atau fileName adalah null.

Panjang name atau fileName adalah nol.

-atau-

Panjang name lebih besar dari panjang maksimum yang ditentukan sistem.

-atau-

fileName berisi spesifikasi jalur (komponen direktori, misalnya).

-atau-

Ada konflik dengan nama file lain yang termasuk dalam rakitan ini.

Rakitan ini sebelumnya telah disimpan.

Rakitan ini dipanggil pada rakitan dinamis dengan Run atribut .

Pemanggil tidak memiliki izin yang diperlukan.

Rakitan untuk penulis simbol default tidak dapat dimuat.

-atau-

Tipe yang mengimplementasikan antarmuka penulis simbol default tidak dapat ditemukan.

Contoh

Contoh kode di bawah ini menunjukkan cara membuat modul dinamis persisten menggunakan 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")

Keterangan

Untuk menentukan modul dinamis yang dapat dipertahankan, rakitan ini perlu dibuat dengan Save atribut atau RunAndSave .

Jika Anda ingin modul berisi manifes perakitan, name harus sama dengan nama perakitan (yaitu, AssemblyName.Name properti yang AssemblyName digunakan untuk membuat rakitan dinamis) dan fileName harus sama dengan nama file yang Anda tentukan saat Anda menyimpan perakitan.

Dalam perakitan dengan hanya satu modul, modul tersebut harus berisi manifes perakitan.

Catatan

Untuk menekan pengoptimalan saat men-debug modul dinamis, terapkan DebuggableAttribute atribut ke rakitan dinamis sebelum memanggil DefineDynamicModule. Create instans DebuggableAttribute dengan DisableOptimizations bendera dan terapkan menggunakan SetCustomAttribute metode . Atribut harus diterapkan ke rakitan dinamis. Ini tidak berpengaruh jika diterapkan ke modul.

Catatan

Dimulai dengan .NET Framework 2.0 Service Pack 1, anggota ini tidak lagi memerlukan ReflectionPermission dengan ReflectionPermissionFlag.ReflectionEmit bendera . (Lihat Masalah Keamanan dalam Pancaran Pancaran.) Untuk menggunakan fungsionalitas ini, aplikasi Anda harus menargetkan .NET Framework 3.5 atau yang lebih baru.

Berlaku untuk

DefineDynamicModule(String, String, Boolean)

Menentukan modul dinamis yang tetap, menentukan nama modul, nama file tempat modul akan disimpan, dan apakah informasi simbol harus dipancarkan menggunakan penulis simbol default.

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

Parameter

name
String

Nama modul dinamis.

fileName
String

Nama file tempat modul dinamis harus disimpan.

emitSymbolInfo
Boolean

Jika true, informasi simbolis ditulis menggunakan penulis simbol default.

Mengembalikan

Objek ModuleBuilder yang mewakili modul dinamis yang ditentukan.

Pengecualian

name atau fileName adalah null.

Panjang name atau fileName adalah nol.

-atau-

Panjang name lebih besar dari panjang maksimum yang ditentukan sistem.

-atau-

fileName berisi spesifikasi jalur (komponen direktori, misalnya).

-atau-

Ada konflik dengan nama file lain yang termasuk dalam rakitan ini.

Rakitan ini sebelumnya telah disimpan.

Rakitan ini dipanggil pada rakitan dinamis dengan Run atribut .

Rakitan untuk penulis simbol default tidak dapat dimuat.

-atau-

Tipe yang mengimplementasikan antarmuka penulis simbol default tidak dapat ditemukan.

Pemanggil tidak memiliki izin yang diperlukan.

Contoh

Contoh kode di bawah ini menunjukkan cara membuat modul dinamis persisten dengan emisi simbol menggunakan 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)

Keterangan

Untuk menentukan modul dinamis yang dapat dipertahankan, rakitan ini perlu dibuat dengan Save atribut atau RunAndSave .

Jika Anda ingin modul berisi manifes perakitan, name harus sama dengan nama perakitan (yaitu, AssemblyName.Name properti yang AssemblyName digunakan untuk membuat rakitan dinamis) dan fileName harus sama dengan nama file yang Anda tentukan saat Anda menyimpan perakitan.

Dalam perakitan dengan hanya satu modul, modul tersebut harus berisi manifes perakitan.

Catatan

Untuk menekan pengoptimalan saat men-debug modul dinamis, terapkan DebuggableAttribute atribut ke rakitan dinamis sebelum memanggil DefineDynamicModule. Create instans DebuggableAttribute dengan DisableOptimizations bendera dan terapkan menggunakan SetCustomAttribute metode . Atribut harus diterapkan ke rakitan dinamis. Ini tidak berpengaruh jika diterapkan ke modul.

Catatan

Dimulai dengan .NET Framework 2.0 Service Pack 1, anggota ini tidak lagi memerlukan ReflectionPermission dengan ReflectionPermissionFlag.ReflectionEmit bendera . (Lihat Masalah Keamanan dalam Pancaran Pancaran.) Untuk menggunakan fungsionalitas ini, aplikasi Anda harus menargetkan .NET Framework 3.5 atau yang lebih baru.

Berlaku untuk