Aracılığıyla paylaş


AssemblyBuilder.DefineDynamicModule Yöntem

Tanım

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.

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, DefineDynamicModulekullanarak 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 YaymaGü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

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.

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, DefineDynamicModulekullanarak 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 YaymaGü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

Tanımlanan dinamik modülü temsil eden ModuleBuilder nesnesi.

Özel durumlar

name veya fileNamenull.

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, DefineDynamicModulekullanarak 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 YaymaGü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 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

trueise, 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 fileNamenull.

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, DefineDynamicModulekullanarak 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 YaymaGü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