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 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.
name
adalah 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.
name
adalah 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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk