AssemblyBuilder.DefineDynamicModule Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mendefinisikan modul dinamis dalam rakitan ini.
Overload
DefineDynamicModule(String) |
Mendefinisikan modul dinamis sementara bernama dalam rakitan 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 tertentu yang akan disimpan ke file yang ditentukan. Tidak ada informasi simbol yang dipancarkan. |
DefineDynamicModule(String, String, Boolean) |
Menentukan modul dinamis yang dapat dipertahankan, 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 rakitan 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
ModuleBuilder yang mewakili modul dinamis yang ditentukan.
Pengecualian
name
dimulai dengan spasi kosong.
-atau-
Panjang name
adalah nol.
-atau-
Panjang name
lebih besar dari panjang maksimum yang ditentukan sistem.
-atau-
.NET Framework saja: Modul dengan name
yang sama telah ditentukan dalam rakitan ini.
name
null
.
.NET Core dan .NET 5+ saja: Modul dinamis telah ditentukan dalam rakitan ini.
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
Hanya .NET Core dan .NET 5+: rakitan Multi-modul tidak didukung. Hanya satu modul dinamis yang dapat didefinisikan dalam rakitan.
.NET Framework saja: Ini adalah kesalahan untuk menentukan beberapa modul dinamis dengan nama yang sama dalam rakitan.
Modul dinamis yang ditentukan bersifat sementara. Modul dinamis tidak disimpan, bahkan jika rakitan dinamis induk dibuat dengan RunAndSave.
Nota
Untuk menekan pengoptimalan saat men-debug modul dinamis, terapkan atribut DebuggableAttribute ke rakitan dinamis sebelum memanggil DefineDynamicModule. Buat instans DebuggableAttribute dengan bendera DisableOptimizations dan terapkan menggunakan metode SetCustomAttribute. Atribut harus diterapkan ke rakitan dinamis. Ini tidak berpengaruh jika diterapkan ke modul.
Nota
Dimulai dengan .NET Framework 2.0 Service Pack 1, anggota ini tidak lagi memerlukan ReflectionPermission dengan bendera ReflectionPermissionFlag.ReflectionEmit. (Lihat Masalah Keamanan dalam Pantulan.) 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
ModuleBuilder yang mewakili modul dinamis yang ditentukan.
Pengecualian
name
dimulai dengan spasi kosong.
-atau-
Panjang name
adalah nol.
-atau-
Panjang name
lebih besar dari panjang maksimum yang ditentukan sistem.
name
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 rakitan.
Modul dinamis tidak disimpan, bahkan jika rakitan dinamis induk dibuat dengan RunAndSave.
Nota
Untuk menekan pengoptimalan saat men-debug modul dinamis, terapkan atribut DebuggableAttribute ke rakitan dinamis sebelum memanggil DefineDynamicModule. Buat instans DebuggableAttribute dengan bendera DisableOptimizations dan terapkan menggunakan metode SetCustomAttribute. Atribut harus diterapkan ke rakitan dinamis. Ini tidak berpengaruh jika diterapkan ke modul.
Nota
Dimulai dengan .NET Framework 2.0 Service Pack 1, anggota ini tidak lagi memerlukan ReflectionPermission dengan bendera ReflectionPermissionFlag.ReflectionEmit. (Lihat Masalah Keamanan dalam Pantulan.) 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 tertentu 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
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 assembly ini.
Rakitan ini sebelumnya telah disimpan.
Rakitan ini dipanggil pada rakitan dinamis dengan atribut Run.
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 atribut Save atau RunAndSave.
Jika Anda ingin modul berisi manifes perakitan, name
harus sama dengan nama assembly (yaitu, properti AssemblyName.Name dari AssemblyName yang digunakan untuk membuat rakitan dinamis) dan fileName
harus sama dengan nama file yang Anda tentukan saat Anda menyimpan assembly.
Dalam rakitan hanya dengan satu modul, modul tersebut harus berisi manifes perakitan.
Nota
Untuk menekan pengoptimalan saat men-debug modul dinamis, terapkan atribut DebuggableAttribute ke rakitan dinamis sebelum memanggil DefineDynamicModule. Buat instans DebuggableAttribute dengan bendera DisableOptimizations dan terapkan menggunakan metode SetCustomAttribute. Atribut harus diterapkan ke rakitan dinamis. Ini tidak berpengaruh jika diterapkan ke modul.
Nota
Dimulai dengan .NET Framework 2.0 Service Pack 1, anggota ini tidak lagi memerlukan ReflectionPermission dengan bendera ReflectionPermissionFlag.ReflectionEmit. (Lihat Masalah Keamanan dalam Pantulan.) 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 dapat dipertahankan, 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
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 assembly ini.
Rakitan ini sebelumnya telah disimpan.
Rakitan ini dipanggil pada rakitan dinamis dengan atribut Run.
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 atribut Save atau RunAndSave.
Jika Anda ingin modul berisi manifes perakitan, name
harus sama dengan nama assembly (yaitu, properti AssemblyName.Name dari AssemblyName yang digunakan untuk membuat rakitan dinamis) dan fileName
harus sama dengan nama file yang Anda tentukan saat Anda menyimpan assembly.
Dalam rakitan hanya dengan satu modul, modul tersebut harus berisi manifes perakitan.
Nota
Untuk menekan pengoptimalan saat men-debug modul dinamis, terapkan atribut DebuggableAttribute ke rakitan dinamis sebelum memanggil DefineDynamicModule. Buat instans DebuggableAttribute dengan bendera DisableOptimizations dan terapkan menggunakan metode SetCustomAttribute. Atribut harus diterapkan ke rakitan dinamis. Ini tidak berpengaruh jika diterapkan ke modul.
Nota
Dimulai dengan .NET Framework 2.0 Service Pack 1, anggota ini tidak lagi memerlukan ReflectionPermission dengan bendera ReflectionPermissionFlag.ReflectionEmit. (Lihat Masalah Keamanan dalam Pantulan.) Untuk menggunakan fungsionalitas ini, aplikasi Anda harus menargetkan .NET Framework 3.5 atau yang lebih baru.