AssemblyBuilder.DefineDynamicModule メソッド

定義

このアセンブリ内部の動的モジュールを定義します。

オーバーロード

DefineDynamicModule(String)

このアセンブリの中に、指定された一時動的モジュールを定義します。

DefineDynamicModule(String, Boolean)

このアセンブリ内に名前付き一時動的モジュールを定義し、シンボル情報を生成する必要があるかどうかを指定します。

DefineDynamicModule(String, String)

指定したファイルに保存される指定された名前を持つ、永続する動的モジュールを定義します。 シンボル情報は生成されません。

DefineDynamicModule(String, String, Boolean)

モジュール名、モジュールの保存先のファイル名、および既定のシンボルのライターを使用してシンボル情報を出力する必要があるかどうかを指定して、永続する動的モジュールを定義します。

DefineDynamicModule(String)

ソース:
AssemblyBuilder.cs
ソース:
AssemblyBuilder.cs
ソース:
AssemblyBuilder.cs

このアセンブリの中に、指定された一時動的モジュールを定義します。

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

パラメーター

name
String

動的アセンブリの名前。

戻り値

定義された動的モジュールを表す ModuleBuilder

例外

name が空白文字から始まっています。

- または -

name の長さが 0 です。

- または -

name の長さがシステム定義の最大長を超えています。

namenullです。

呼び出し元に、必要なアクセス許可がありません。

既定のシンボル ライターのアセンブリを読み込めません。

- または -

既定のシンボル ライターのインターフェイスを実装する型が見つかりません。

次のコード例では、 を使用して一時的な動的モジュールを作成する方法を 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")

注釈

アセンブリ内で同じ名前の複数の動的モジュールを定義すると、エラーになります。

定義された動的モジュールは一時的なものです。 親動的アセンブリが で RunAndSave作成された場合でも、動的モジュールは保存されません。

Note

動的モジュールのデバッグ時に最適化を抑制するには、 を DebuggableAttribute 呼び出す DefineDynamicModule前に、 属性を動的アセンブリに適用します。 フラグを使用して の DebuggableAttribute インスタンスを DisableOptimizations 作成し、 メソッドを使用して適用します SetCustomAttribute 。 属性は、動的アセンブリに適用する必要があります。 モジュールに適用されている場合、効果はありません。

Note

.NET Framework 2.0 Service Pack 1 以降では、このメンバーは フラグを指定するReflectionPermissionFlag.ReflectionEmit必要ReflectionPermissionがなくなりました。 (リフレクション出力のセキュリティの問題に関するページを参照してください)。この機能を使用するには、アプリケーションで .NET Framework 3.5 以降をターゲットにする必要があります。

適用対象

DefineDynamicModule(String, Boolean)

このアセンブリ内に名前付き一時動的モジュールを定義し、シンボル情報を生成する必要があるかどうかを指定します。

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

パラメーター

name
String

動的アセンブリの名前。

emitSymbolInfo
Boolean

シンボル情報を生成する場合、true。それ以外の場合、false

戻り値

定義された動的モジュールを表す ModuleBuilder

例外

name が空白文字から始まっています。

- または -

name の長さが 0 です。

- または -

name の長さがシステム定義の最大長を超えています。

namenullです。

既定のシンボル ライターのアセンブリを読み込めません。

- または -

既定のシンボル ライターのインターフェイスを実装する型が見つかりません。

呼び出し元に、必要なアクセス許可がありません。

次のコード例では、 を使用して 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 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)

注釈

アセンブリ内で同じ名前の複数の動的モジュールを定義すると、エラーになります。

親動的アセンブリが で RunAndSave作成された場合でも、動的モジュールは保存されません。

Note

動的モジュールのデバッグ時に最適化を抑制するには、 を DebuggableAttribute 呼び出す DefineDynamicModule前に、 属性を動的アセンブリに適用します。 フラグを使用して の DebuggableAttribute インスタンスを DisableOptimizations 作成し、 メソッドを使用して適用します SetCustomAttribute 。 属性は、動的アセンブリに適用する必要があります。 モジュールに適用されている場合、効果はありません。

Note

.NET Framework 2.0 Service Pack 1 以降では、このメンバーは フラグを指定するReflectionPermissionFlag.ReflectionEmit必要ReflectionPermissionがなくなりました。 (リフレクション出力のセキュリティの問題に関するページを参照してください)。この機能を使用するには、アプリケーションで .NET Framework 3.5 以降をターゲットにする必要があります。

適用対象

DefineDynamicModule(String, String)

指定したファイルに保存される指定された名前を持つ、永続する動的モジュールを定義します。 シンボル情報は生成されません。

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

パラメーター

name
String

動的アセンブリの名前。

fileName
String

動的モジュールの保存先となるファイルの名前。

戻り値

定義された動的モジュールを表す ModuleBuilder オブジェクト。

例外

name または fileNamenull です。

name または fileName の長さが 0 です。

- または -

name の長さがシステム定義の最大長を超えています。

- または -

fileName にパス指定 (ディレクトリ コンポーネントなど) が含まれています。

- または -

このアセンブリに属する別のファイルの名前と競合しています。

このアセンブリは既に保存されています。

このアセンブリは、Run 属性を持つ動的アセンブリで呼び出されました。

呼び出し元に、必要なアクセス許可がありません。

既定のシンボル ライターのアセンブリを読み込めません。

- または -

既定のシンボル ライターのインターフェイスを実装する型が見つかりません。

次のコード例では、 を使用して永続的な動的モジュールを作成する方法を 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")

注釈

永続化可能な動的モジュールを定義するには、 属性または 属性を使用してこのアセンブリを Save 作成する RunAndSave 必要があります。

モジュールにアセンブリ マニフェストを含める場合は、nameアセンブリの名前 (つまり、動的アセンブリの作成に使用される の AssemblyName プロパティ) と同じにする必要があり、AssemblyName.Nameアセンブリを保存するときに指定するファイル名とfileName同じである必要があります。

モジュールが 1 つだけのアセンブリでは、そのモジュールにアセンブリ マニフェストを含める必要があります。

Note

動的モジュールのデバッグ時に最適化を抑制するには、 を DebuggableAttribute 呼び出す DefineDynamicModule前に、 属性を動的アセンブリに適用します。 フラグを使用して の DebuggableAttribute インスタンスを DisableOptimizations 作成し、 メソッドを使用して適用します SetCustomAttribute 。 属性は、動的アセンブリに適用する必要があります。 モジュールに適用されている場合、効果はありません。

Note

.NET Framework 2.0 Service Pack 1 以降では、このメンバーは フラグを指定するReflectionPermissionFlag.ReflectionEmit必要ReflectionPermissionがなくなりました。 (リフレクション出力のセキュリティの問題に関するページを参照してください)。この機能を使用するには、アプリケーションで .NET Framework 3.5 以降をターゲットにする必要があります。

適用対象

DefineDynamicModule(String, String, Boolean)

モジュール名、モジュールの保存先のファイル名、および既定のシンボルのライターを使用してシンボル情報を出力する必要があるかどうかを指定して、永続する動的モジュールを定義します。

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

パラメーター

name
String

動的アセンブリの名前。

fileName
String

動的モジュールの保存先となるファイルの名前。

emitSymbolInfo
Boolean

true の場合、既定のシンボル ライターを使用してシンボル情報が書き込まれます。

戻り値

定義された動的モジュールを表す ModuleBuilder オブジェクト。

例外

name または fileNamenull です。

name または fileName の長さが 0 です。

- または -

name の長さがシステム定義の最大長を超えています。

- または -

fileName にパス指定 (ディレクトリ コンポーネントなど) が含まれています。

- または -

このアセンブリに属する別のファイルの名前と競合しています。

このアセンブリは既に保存されています。

このアセンブリは、Run 属性を持つ動的アセンブリで呼び出されました。

既定のシンボル ライターのアセンブリを読み込めません。

- または -

既定のシンボル ライターのインターフェイスを実装する型が見つかりません。

呼び出し元に、必要なアクセス許可がありません。

次のコード例では、 を使用してシンボルの放出を使用して永続的な動的モジュールを作成する方法を 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)

注釈

永続化可能な動的モジュールを定義するには、 属性または 属性を使用してこのアセンブリを Save 作成する RunAndSave 必要があります。

モジュールにアセンブリ マニフェストを含める場合は、nameアセンブリの名前 (つまり、動的アセンブリの作成に使用される の AssemblyName プロパティ) と同じにする必要があり、AssemblyName.Nameアセンブリを保存するときに指定したファイル名とfileName同じにする必要があります。

モジュールが 1 つだけのアセンブリでは、そのモジュールにアセンブリ マニフェストが含まれている必要があります。

Note

動的モジュールのデバッグ時に最適化を抑制するには、 を呼び出すDefineDynamicModule前に、 属性を動的アセンブリに適用DebuggableAttributeします。 フラグを使用して の DebuggableAttribute インスタンスを DisableOptimizations 作成し、 メソッドを使用して適用します SetCustomAttribute 。 属性は動的アセンブリに適用する必要があります。 モジュールに適用しても効果はありません。

Note

.NET Framework 2.0 Service Pack 1 以降では、このメンバーは フラグをReflectionPermissionFlag.ReflectionEmit使用する必要ReflectionPermissionがなくなりました。 (リフレクション出力のセキュリティの問題に関するページを参照してください)。この機能を使用するには、アプリケーションで .NET Framework 3.5 以降をターゲットにする必要があります。

適用対象