AssemblyBuilder.DefineDynamicModule Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bu derlemede dinamik bir modül tanımlar.
Aşırı Yüklemeler
DefineDynamicModule(String) |
Bu derlemede adlandırılmış bir geçici dinamik modül tanımlar. |
DefineDynamicModule(String, Boolean) |
Bu derlemede adlandırılmış bir geçici dinamik modül tanımlar ve sembol bilgilerinin yayılıp yayılmayacağını belirtir. |
DefineDynamicModule(String, String) |
Belirtilen dosyaya kaydedilecek belirtilen ada sahip kalıcı bir dinamik modül tanımlar. Hiçbir sembol bilgisi belirtilmez. |
DefineDynamicModule(String, String, Boolean) |
Kalıcı bir dinamik modül tanımlar; modül adını, modülün kaydedileceği dosyanın adını ve simge bilgilerinin varsayılan simge yazıcı kullanılarak yayılıp yayılmayacağını belirtir. |
DefineDynamicModule(String)
- Kaynak:
- AssemblyBuilder.cs
- Kaynak:
- AssemblyBuilder.cs
- Kaynak:
- AssemblyBuilder.cs
Bu derlemede adlandırılmış bir geçici dinamik modül tanımlar.
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
Parametreler
- name
- String
Dinamik modülün adı.
Döndürülenler
ModuleBuilder Tanımlı dinamik modülü temsil eden bir.
Özel durumlar
name
boşlukla başlar.
-veya-
uzunluğu name
sıfırdır.
-veya-
uzunluğu name
, sistem tarafından tanımlanan uzunluk üst sınırından daha uzundur.
name
, null
değeridir.
Çağıranın gerekli izni yok.
Varsayılan simge yazıcı derlemesi yüklenemiyor.
-veya-
Varsayılan simge yazıcı arabirimini uygulayan tür bulunamıyor.
Örnekler
Aşağıdaki kod örneğinde kullanarak DefineDynamicModule
geçici bir dinamik modülün nasıl oluşturulacağı gösterilmektedir.
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")
Açıklamalar
Bir derlemede aynı ada sahip birden çok dinamik modül tanımlamak bir hatadır.
Tanımlanan dinamik modül geçicidir. Üst dinamik derleme ile RunAndSaveoluşturulmuş olsa bile dinamik modül kaydedilmez.
Not
Dinamik modüllerde hata ayıklarken iyileştirmeleri engellemek için çağrısı DefineDynamicModuleyapmadan önce özniteliğini dinamik derlemeye uygulayınDebuggableAttribute. bayrağıyla DisableOptimizations bir örneğini DebuggableAttribute İçerik Oluşturucu ve yöntemini kullanarak SetCustomAttribute uygulayın. özniteliği dinamik derlemeye uygulanmalıdır. Modüle uygulandığında hiçbir etkisi olmaz.
Not
.NET Framework 2.0 Service Pack 1'den başlayarak, bu üye artık bayrağını ReflectionPermissionFlag.ReflectionEmit gerektirmezReflectionPermission. (Bkz. Yansıma Yaymada Güvenlik Sorunları.) Bu işlevselliği kullanmak için uygulamanızın .NET Framework 3.5 veya sonraki bir sürümü hedeflemesi gerekir.
Şunlara uygulanır
DefineDynamicModule(String, Boolean)
Bu derlemede adlandırılmış bir geçici dinamik modül tanımlar ve sembol bilgilerinin yayılıp yayılmayacağını belirtir.
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
Parametreler
- name
- String
Dinamik modülün adı.
- emitSymbolInfo
- Boolean
true
sembol bilgisi yayılacaksa; aksi takdirde , false
.
Döndürülenler
ModuleBuilder Tanımlı dinamik modülü temsil eden bir.
Özel durumlar
name
boşlukla başlar.
-veya-
uzunluğu name
sıfırdır.
-veya-
uzunluğu name
, sistem tarafından tanımlanan uzunluk üst sınırından daha uzundur.
name
, null
değeridir.
Varsayılan simge yazıcı derlemesi yüklenemiyor.
-veya-
Varsayılan simge yazıcı arabirimini uygulayan tür bulunamıyor.
Çağıranın gerekli izni yok.
Örnekler
Aşağıdaki kod örneği, sembol bilgilerini gizleyarak kullanarak DefineDynamicModule
geçici bir dinamik modülün nasıl oluşturulacağını gösterir.
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)
Açıklamalar
Bir derlemede aynı ada sahip birden çok dinamik modül tanımlamak bir hatadır.
Üst dinamik derleme ile RunAndSaveoluşturulmuş olsa bile dinamik modül kaydedilmez.
Not
Dinamik modüllerde hata ayıklarken iyileştirmeleri engellemek için çağrısı DefineDynamicModuleyapmadan önce özniteliğini dinamik derlemeye uygulayınDebuggableAttribute. bayrağıyla DisableOptimizations bir örneğini DebuggableAttribute İçerik Oluşturucu ve yöntemini kullanarak SetCustomAttribute uygulayın. özniteliği dinamik derlemeye uygulanmalıdır. Modüle uygulandığında hiçbir etkisi olmaz.
Not
.NET Framework 2.0 Service Pack 1'den başlayarak, bu üye artık bayrağını ReflectionPermissionFlag.ReflectionEmit gerektirmezReflectionPermission. (Bkz. Yansıma Yaymada Güvenlik Sorunları.) Bu işlevselliği kullanmak için uygulamanızın .NET Framework 3.5 veya sonraki bir sürümü hedeflemesi gerekir.
Şunlara uygulanır
DefineDynamicModule(String, String)
Belirtilen dosyaya kaydedilecek belirtilen ada sahip kalıcı bir dinamik modül tanımlar. Hiçbir sembol bilgisi belirtilmez.
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
Parametreler
- name
- String
Dinamik modülün adı.
- fileName
- String
Dinamik modülün kaydedilmesi gereken dosyanın adı.
Döndürülenler
ModuleBuilder Tanımlı dinamik modülü temsil eden bir nesne.
Özel durumlar
name
veya fileName
şeklindedir null
.
veya fileName
uzunluğu name
sıfırdır.
-veya-
uzunluğu name
, sistem tarafından tanımlanan uzunluk üst sınırından daha uzundur.
-veya-
fileName
bir yol belirtimi (örneğin, bir dizin bileşeni) içerir.
-veya-
Bu derlemeye ait başka bir dosyanın adıyla çakışma var.
Bu derleme daha önce kaydedilmiştir.
Bu derleme özniteliğine sahip Run dinamik bir derlemede çağrıldı.
Çağıranın gerekli izni yok.
Varsayılan simge yazıcı derlemesi yüklenemiyor.
-veya-
Varsayılan simge yazıcı arabirimini uygulayan tür bulunamıyor.
Örnekler
Aşağıdaki kod örneğinde kullanarak DefineDynamicModule
kalıcı bir dinamik modülün nasıl oluşturulacağı gösterilmektedir.
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")
Açıklamalar
Kalıcı bir dinamik modül tanımlamak için bu derlemenin Save veya RunAndSave özniteliğiyle oluşturulması gerekir.
Modülün derleme bildirimini içermesini istiyorsanız, name
derlemenin adıyla (dinamik AssemblyName.Name derlemeyi oluşturmak için kullanılan özelliği AssemblyName ) ve fileName
derlemeyi kaydederken belirttiğiniz dosya adıyla aynı olmalıdır.
Yalnızca bir modül içeren bir derlemede, bu modül derleme bildirimini içermelidir.
Not
Dinamik modüllerde hata ayıklarken iyileştirmeleri engellemek için çağrısı DefineDynamicModuleyapmadan önce özniteliğini dinamik derlemeye uygulayınDebuggableAttribute. bayrağıyla DisableOptimizations bir örneğini DebuggableAttribute İçerik Oluşturucu ve yöntemini kullanarak SetCustomAttribute uygulayın. özniteliği dinamik derlemeye uygulanmalıdır. Modüle uygulandığında hiçbir etkisi olmaz.
Not
.NET Framework 2.0 Service Pack 1'den başlayarak, bu üye artık bayrağını ReflectionPermissionFlag.ReflectionEmit gerektirmezReflectionPermission. (Bkz. Yansıma Yaymada Güvenlik Sorunları.) Bu işlevselliği kullanmak için uygulamanızın .NET Framework 3.5 veya sonraki bir sürümü hedeflemesi gerekir.
Şunlara uygulanır
DefineDynamicModule(String, String, Boolean)
Kalıcı bir dinamik modül tanımlar; modül adını, modülün kaydedileceği dosyanın adını ve simge bilgilerinin varsayılan simge yazıcı kullanılarak yayılıp yayılmayacağını belirtir.
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
Parametreler
- name
- String
Dinamik modülün adı.
- fileName
- String
Dinamik modülün kaydedilmesi gereken dosyanın adı.
- emitSymbolInfo
- Boolean
ise true
, sembolik bilgiler varsayılan simge yazıcı kullanılarak yazılır.
Döndürülenler
ModuleBuilder Tanımlı dinamik modülü temsil eden bir nesne.
Özel durumlar
name
veya fileName
şeklindedir null
.
veya fileName
uzunluğu name
sıfırdır.
-veya-
uzunluğu name
, sistem tarafından tanımlanan uzunluk üst sınırından daha uzundur.
-veya-
fileName
bir yol belirtimi (örneğin, bir dizin bileşeni) içerir.
-veya-
Bu derlemeye ait başka bir dosyanın adıyla çakışma var.
Bu derleme daha önce kaydedilmiştir.
Bu derleme, özniteliğine sahip dinamik bir derlemede Run çağrıldı.
Varsayılan simge yazıcı derlemesi yüklenemiyor.
-veya-
Varsayılan simge yazıcı arabirimini uygulayan tür bulunamıyor.
Çağıranın gerekli izni yok.
Örnekler
Aşağıdaki kod örneğinde kullanarak DefineDynamicModule
sembol emisyonuyla kalıcı bir dinamik modülün nasıl oluşturulacağı gösterilmektedir.
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)
Açıklamalar
Kalıcı bir dinamik modül tanımlamak için bu derlemenin Save veya RunAndSave özniteliğiyle oluşturulması gerekir.
Modülün derleme bildirimini içermesini istiyorsanız, name
derlemenin adıyla (yani, AssemblyName.Name dinamik derlemeyi oluşturmak için kullanılan özelliğinin AssemblyName ) fileName
aynı ve derlemeyi kaydederken belirttiğiniz dosya adıyla aynı olmalıdır.
Yalnızca bir modüle sahip bir derlemede, bu modül derleme bildirimini içermelidir.
Not
Dinamik modüllerde hata ayıklama sırasında iyileştirmeleri engellemek için, çağırmadan DefineDynamicModuleönce özniteliğini dinamik derlemeye uygulayınDebuggableAttribute. bayrağıyla DisableOptimizations bir örneğini DebuggableAttribute İçerik Oluşturucu ve yöntemini kullanarak SetCustomAttribute uygulayın. özniteliği dinamik derlemeye uygulanmalıdır. Modüle uygulandığında hiçbir etkisi olmaz.
Not
.NET Framework 2.0 Service Pack 1'den başlayarak, bu üye artık bayrağını ReflectionPermissionFlag.ReflectionEmit gerektirmezReflectionPermission. (Bkz. Yansıma Yaymadaki Güvenlik Sorunları.) Bu işlevselliği kullanmak için uygulamanızın .NET Framework 3.5 veya sonraki bir sürümü hedeflemesi gerekir.
Şunlara uygulanır
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin