AssemblyBuilder.DefineDynamicModule メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
このアセンブリ内部の動的モジュールを定義します。
オーバーロード
DefineDynamicModule(String) |
このアセンブリの中に、指定された一時動的モジュールを定義します。 |
DefineDynamicModule(String, Boolean) |
このアセンブリ内に名前付き一時動的モジュールを定義し、シンボル情報を生成する必要があるかどうかを指定します。 |
DefineDynamicModule(String, String) |
指定したファイルに保存される指定された名前を持つ、永続する動的モジュールを定義します。 シンボル情報は生成されません。 |
DefineDynamicModule(String, String, Boolean) |
モジュール名、モジュールの保存先のファイル名、および既定のシンボルのライターを使用してシンボル情報を出力する必要があるかどうかを指定して、永続する動的モジュールを定義します。 |
DefineDynamicModule(String)
このアセンブリの中に、指定された一時動的モジュールを定義します。
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
が null
です。
呼び出し元に、必要なアクセス許可がありません。
例
次のコード例は、 を使用して一時的な動的モジュールを作成する方法を 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作成された場合でも、動的モジュールは保存されません。
注意
動的モジュールのデバッグ時に最適化を抑制するには、 を呼び出すDefineDynamicModule前に、 属性を動的アセンブリに適用DebuggableAttributeします。 のインスタンスDebuggableAttributeを フラグと共にDisableOptimizationsCreateし、 メソッドを使用して適用しますSetCustomAttribute。 属性は動的アセンブリに適用する必要があります。 モジュールに適用しても効果はありません。
注意
.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
が null
です。
呼び出し元に、必要なアクセス許可がありません。
例
次のコード例では、 を使用して 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作成された場合でも、動的モジュールは保存されません。
注意
動的モジュールのデバッグ時に最適化を抑制するには、 を呼び出すDefineDynamicModule前に、 属性を動的アセンブリに適用DebuggableAttributeします。 のインスタンスDebuggableAttributeを フラグと共にDisableOptimizationsCreateし、 メソッドを使用して適用しますSetCustomAttribute。 属性は動的アセンブリに適用する必要があります。 モジュールに適用しても効果はありません。
注意
.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
または fileName
が null
です。
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 つだけのアセンブリでは、そのモジュールにアセンブリ マニフェストが含まれている必要があります。
注意
動的モジュールのデバッグ時に最適化を抑制するには、 を呼び出すDefineDynamicModule前に、 属性を動的アセンブリに適用DebuggableAttributeします。 のインスタンスDebuggableAttributeを フラグと共にDisableOptimizationsCreateし、 メソッドを使用して適用しますSetCustomAttribute。 属性は動的アセンブリに適用する必要があります。 モジュールに適用しても効果はありません。
注意
.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
または fileName
が null
です。
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 つだけのアセンブリでは、そのモジュールにアセンブリ マニフェストが含まれている必要があります。
注意
動的モジュールのデバッグ時に最適化を抑制するには、 を呼び出すDefineDynamicModule前に、 属性を動的アセンブリに適用DebuggableAttributeします。 のインスタンスDebuggableAttributeを フラグと共にDisableOptimizationsCreateし、 メソッドを使用して適用しますSetCustomAttribute。 属性は動的アセンブリに適用する必要があります。 モジュールに適用しても効果はありません。
注意
.NET Framework 2.0 Service Pack 1 以降では、このメンバーは フラグをReflectionPermissionFlag.ReflectionEmit使用する必要ReflectionPermissionがなくなりました。 (リフレクション出力のセキュリティの問題に関するページを参照してください)。この機能を使用するには、アプリケーションで .NET Framework 3.5 以降をターゲットにする必要があります。
適用対象
.NET
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示