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 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 DefineDynamicModulegeç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 DefineDynamicModulegeç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 DefineDynamicModulekalı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 DefineDynamicModulesembol 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