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 varsayılan simge yazıcı kullanılarak sembol bilgilerinin 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
Tanımlanan dinamik modülü temsil eden bir ModuleBuilder.
Özel durumlar
name
boşlukla başlar.
-veya-
name
uzunluğu sıfırdır.
-veya-
name
uzunluğu, sistem tarafından tanımlanan uzunluk üst sınırından büyüktür.
-veya-
Yalnızca .NET Framework: Aynı name
sahip bir modül bu derlemede zaten tanımlanmıştır.
name
null
.
Yalnızca .NET Core ve .NET 5+ : Bu derlemede zaten bir dinamik modül tanımlanmıştır.
Ç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ği, DefineDynamicModule
kullanarak 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 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
Yalnızca .NET Core ve .NET 5+ : Çok modüllü derlemelerdesteklenmez. Derlemede yalnızca bir dinamik modül tanımlanabilir.
Yalnızca .NET Framework: 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 RunAndSaveile oluşturulmuş olsa bile dinamik modül kaydedilmez.
Not
Dinamik modüllerde hata ayıklama yaparken iyileştirmeleri engellemek için DefineDynamicModuleçağırmadan önce DebuggableAttribute özniteliğini dinamik derlemeye uygulayın. DisableOptimizations bayrağıyla bir DebuggableAttribute örneği oluşturun ve SetCustomAttribute yöntemini kullanarak 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 ReflectionPermissionFlag.ReflectionEmit bayrağıyla ReflectionPermission gerektirmez. (Bkz. Yansıma Yayma
Ş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
Sembol bilgilerinin yayılıp yayılmadığını true
; aksi takdirde false
.
Döndürülenler
Tanımlanan dinamik modülü temsil eden bir ModuleBuilder.
Özel durumlar
name
boşlukla başlar.
-veya-
name
uzunluğu sıfırdır.
-veya-
name
uzunluğu, sistem tarafından tanımlanan uzunluk üst sınırından büyüktür.
name
null
.
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, DefineDynamicModule
kullanarak sembol bilgilerini gizleyerek 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 RunAndSaveile oluşturulmuş olsa bile dinamik modül kaydedilmez.
Not
Dinamik modüllerde hata ayıklama yaparken iyileştirmeleri engellemek için DefineDynamicModuleçağırmadan önce DebuggableAttribute özniteliğini dinamik derlemeye uygulayın. DisableOptimizations bayrağıyla bir DebuggableAttribute örneği oluşturun ve SetCustomAttribute yöntemini kullanarak 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 ReflectionPermissionFlag.ReflectionEmit bayrağıyla ReflectionPermission gerektirmez. (Bkz. Yansıma Yayma
Ş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
Tanımlanan dinamik modülü temsil eden ModuleBuilder nesnesi.
Özel durumlar
name
veya fileName
null
.
name
veya fileName
uzunluğu sıfırdır.
-veya-
name
uzunluğu, sistem tarafından tanımlanan uzunluk üst sınırından büyüktür.
-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, Run özniteliğine sahip bir dinamik 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ği, DefineDynamicModule
kullanarak kalıcı 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 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 derlemeyi oluşturmak için kullanılan AssemblyNameAssemblyName.Name özelliği) 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ıklama yaparken iyileştirmeleri engellemek için DefineDynamicModuleçağırmadan önce DebuggableAttribute özniteliğini dinamik derlemeye uygulayın. DisableOptimizations bayrağıyla bir DebuggableAttribute örneği oluşturun ve SetCustomAttribute yöntemini kullanarak 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 ReflectionPermissionFlag.ReflectionEmit bayrağıyla ReflectionPermission gerektirmez. (Bkz. Yansıma Yayma
Ş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 varsayılan simge yazıcı kullanılarak sembol bilgilerinin 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
true
ise, sembolik bilgiler varsayılan simge yazıcı kullanılarak yazılır.
Döndürülenler
Tanımlanan dinamik modülü temsil eden ModuleBuilder nesnesi.
Özel durumlar
name
veya fileName
null
.
name
veya fileName
uzunluğu sıfırdır.
-veya-
name
uzunluğu, sistem tarafından tanımlanan uzunluk üst sınırından büyüktür.
-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, Run özniteliğine sahip bir dinamik derlemede ç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ği, DefineDynamicModule
kullanarak sembol emisyonu ile kalıcı 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 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 (dinamik derlemeyi oluşturmak için kullanılan AssemblyNameAssemblyName.Name özelliği) 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ıklama yaparken iyileştirmeleri engellemek için DefineDynamicModuleçağırmadan önce DebuggableAttribute özniteliğini dinamik derlemeye uygulayın. DisableOptimizations bayrağıyla bir DebuggableAttribute örneği oluşturun ve SetCustomAttribute yöntemini kullanarak 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 ReflectionPermissionFlag.ReflectionEmit bayrağıyla ReflectionPermission gerektirmez. (Bkz. Yansıma Yayma