AssemblyBuilder.DefineDynamicModule メソッド

定義

このアセンブリ内部の動的モジュールを定義します。Defines a dynamic module in this assembly.

オーバーロード

DefineDynamicModule(String)

このアセンブリの中に、指定された一時動的モジュールを定義します。Defines a named transient dynamic module in this assembly.

DefineDynamicModule(String, Boolean)

このアセンブリ内に名前付き一時動的モジュールを定義し、シンボル情報を生成する必要があるかどうかを指定します。Defines a named transient dynamic module in this assembly and specifies whether symbol information should be emitted.

DefineDynamicModule(String, String)

指定したファイルに保存される指定された名前を持つ、永続する動的モジュールを定義します。Defines a persistable dynamic module with the given name that will be saved to the specified file. シンボル情報は生成されません。No symbol information is emitted.

DefineDynamicModule(String, String, Boolean)

モジュール名、モジュールの保存先のファイル名、および既定のシンボルのライターを使用してシンボル情報を出力する必要があるかどうかを指定して、永続する動的モジュールを定義します。Defines a persistable dynamic module, specifying the module name, the name of the file to which the module will be saved, and whether symbol information should be emitted using the default symbol writer.

DefineDynamicModule(String)

このアセンブリの中に、指定された一時動的モジュールを定義します。Defines a named transient dynamic module in this assembly.

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

動的アセンブリの名前。The name of the dynamic module.

戻り値

ModuleBuilder

定義された動的モジュールを表す ModuleBuilderA ModuleBuilder representing the defined dynamic module.

例外

name が空白文字から始まっています。name begins with white space.

- または --or- name の長さが 0 です。The length of name is zero.

- または --or- name の長さがシステム定義の最大長を超えています。The length of name is greater than the system-defined maximum length.

namenullです。name is null.

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

既定のシンボル ライターのアセンブリを読み込めません。The assembly for default symbol writer cannot be loaded.

- または --or-

既定のシンボル ライターのインターフェイスを実装する型が見つかりません。The type that implements the default symbol writer interface cannot be found.

次のコード例は、を使用して、一時的な動的モジュールを作成する方法を示して DefineDynamicModule います。The code example below demonstrates how to create a transient dynamic module using 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")

注釈

アセンブリに同じ名前の複数の動的モジュールを定義すると、エラーになります。It is an error to define multiple dynamic modules with the same name in an assembly.

定義された動的モジュールは一時的です。The defined dynamic module is transient. 親の動的アセンブリがで作成されている場合でも、動的モジュールは保存されません RunAndSaveThe dynamic module is not saved, even if the parent dynamic assembly was created with RunAndSave.

注意

動的モジュールをデバッグするときに最適化を抑制するには、を DebuggableAttribute 呼び出す前に、動的アセンブリに属性を適用し DefineDynamicModule ます。To suppress optimizations when debugging dynamic modules, apply the DebuggableAttribute attribute to the dynamic assembly before calling DefineDynamicModule. フラグを使用してのインスタンスを作成 DebuggableAttribute DisableOptimizations し、メソッドを使用してを適用し SetCustomAttribute ます。Create an instance of DebuggableAttribute with the DisableOptimizations flag and apply it using the SetCustomAttribute method. 動的アセンブリに属性を適用する必要があります。The attribute must be applied to the dynamic assembly. モジュールに適用しても効果はありません。It has no effect if applied to the module.

注意

以降では、 .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1 このメンバーは ReflectionPermission フラグを使用する必要がなくなりました ReflectionPermissionFlag.ReflectionEmitStarting with the .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1, this member no longer requires ReflectionPermission with the ReflectionPermissionFlag.ReflectionEmit flag. (「 リフレクション出力のセキュリティの問題」を参照してください)。この機能を使用するには、アプリケーションで以降を対象とする必要があり .NET Framework 3.5.NET Framework 3.5 ます。(See Security Issues in Reflection Emit.) To use this functionality, your application should target the .NET Framework 3.5.NET Framework 3.5 or later.

適用対象

DefineDynamicModule(String, Boolean)

このアセンブリ内に名前付き一時動的モジュールを定義し、シンボル情報を生成する必要があるかどうかを指定します。Defines a named transient dynamic module in this assembly and specifies whether symbol information should be emitted.

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

動的アセンブリの名前。The name of the dynamic module.

emitSymbolInfo
Boolean

シンボル情報を生成する場合、true。それ以外の場合、falsetrue if symbol information is to be emitted; otherwise, false.

戻り値

ModuleBuilder

定義された動的モジュールを表す ModuleBuilderA ModuleBuilder representing the defined dynamic module.

例外

name が空白文字から始まっています。name begins with white space.

- または --or- name の長さが 0 です。The length of name is zero.

- または --or- name の長さがシステム定義の最大長を超えています。The length of name is greater than the system-defined maximum length.

namenullです。name is null.

既定のシンボル ライターのアセンブリを読み込めません。The assembly for default symbol writer cannot be loaded.

- または --or-

既定のシンボル ライターのインターフェイスを実装する型が見つかりません。The type that implements the default symbol writer interface cannot be found.

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

次のコード例は、を使用して一時動的モジュールを作成する方法を示して DefineDynamicModule います。シンボル情報は抑制されています。The code example below demonstrates how to create a transient dynamic module using DefineDynamicModule, suppressing symbol information.

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)

注釈

アセンブリに同じ名前の複数の動的モジュールを定義すると、エラーになります。It is an error to define multiple dynamic modules with the same name in an assembly.

親の動的アセンブリがで作成されている場合でも、動的モジュールは保存されません RunAndSaveThe dynamic module is not saved, even if the parent dynamic assembly was created with RunAndSave.

注意

動的モジュールをデバッグするときに最適化を抑制するには、を DebuggableAttribute 呼び出す前に、動的アセンブリに属性を適用し DefineDynamicModule ます。To suppress optimizations when debugging dynamic modules, apply the DebuggableAttribute attribute to the dynamic assembly before calling DefineDynamicModule. フラグを使用してのインスタンスを作成 DebuggableAttribute DisableOptimizations し、メソッドを使用してを適用し SetCustomAttribute ます。Create an instance of DebuggableAttribute with the DisableOptimizations flag and apply it using the SetCustomAttribute method. 動的アセンブリに属性を適用する必要があります。The attribute must be applied to the dynamic assembly. モジュールに適用しても効果はありません。It has no effect if applied to the module.

注意

以降では、 .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1 このメンバーは ReflectionPermission フラグを使用する必要がなくなりました ReflectionPermissionFlag.ReflectionEmitStarting with the .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1, this member no longer requires ReflectionPermission with the ReflectionPermissionFlag.ReflectionEmit flag. (「 リフレクション出力のセキュリティの問題」を参照してください)。この機能を使用するには、アプリケーションで以降を対象とする必要があり .NET Framework 3.5.NET Framework 3.5 ます。(See Security Issues in Reflection Emit.) To use this functionality, your application should target the .NET Framework 3.5.NET Framework 3.5 or later.

適用対象

DefineDynamicModule(String, String)

指定したファイルに保存される指定された名前を持つ、永続する動的モジュールを定義します。Defines a persistable dynamic module with the given name that will be saved to the specified file. シンボル情報は生成されません。No symbol information is emitted.

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

動的アセンブリの名前。The name of the dynamic module.

fileName
String

動的モジュールの保存先となるファイルの名前。The name of the file to which the dynamic module should be saved.

戻り値

ModuleBuilder

定義された動的モジュールを表す ModuleBuilder オブジェクト。A ModuleBuilder object representing the defined dynamic module.

例外

name または fileNamenull です。name or fileName is null.

name または fileName の長さが 0 です。The length of name or fileName is zero.

- または --or- name の長さがシステム定義の最大長を超えています。The length of name is greater than the system-defined maximum length.

- または --or- fileName にパス指定 (ディレクトリ コンポーネントなど) が含まれています。fileName contains a path specification (a directory component, for example).

- または --or- このアセンブリに属する別のファイルの名前と競合しています。There is a conflict with the name of another file that belongs to this assembly.

このアセンブリは既に保存されています。This assembly has been previously saved.

このアセンブリは、Run 属性を持つ動的アセンブリで呼び出されました。This assembly was called on a dynamic assembly with Run attribute.

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

既定のシンボル ライターのアセンブリを読み込めません。The assembly for default symbol writer cannot be loaded.

- または --or-

既定のシンボル ライターのインターフェイスを実装する型が見つかりません。The type that implements the default symbol writer interface cannot be found.

次のコード例は、を使用して永続的な動的モジュールを作成する方法を示して DefineDynamicModule います。The code example below demonstrates how to create a persistent dynamic module using 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 ます。To define a persistable dynamic module, this assembly needs to be created with the Save or the RunAndSave attribute.

モジュールにアセンブリマニフェストを含める場合、は、アセンブリ name の名前 (つまり、 AssemblyName.Name AssemblyName 動的アセンブリの作成に使用されるのプロパティ) と同じである必要があり、アセンブリを fileName 保存するときに指定したファイル名と同じである必要があります。If you want the module to contain the assembly manifest, name should be the same as the name of the assembly (that is, the AssemblyName.Name property of the AssemblyName used to create the dynamic assembly) and fileName should be the same as the filename you specify when you save the assembly.

モジュールが1つだけのアセンブリでは、そのモジュールにアセンブリマニフェストが含まれている必要があります。In an assembly with only one module, that module should contain the assembly manifest.

注意

動的モジュールをデバッグするときに最適化を抑制するには、を DebuggableAttribute 呼び出す前に、動的アセンブリに属性を適用し DefineDynamicModule ます。To suppress optimizations when debugging dynamic modules, apply the DebuggableAttribute attribute to the dynamic assembly before calling DefineDynamicModule. フラグを使用してのインスタンスを作成 DebuggableAttribute DisableOptimizations し、メソッドを使用してを適用し SetCustomAttribute ます。Create an instance of DebuggableAttribute with the DisableOptimizations flag and apply it using the SetCustomAttribute method. 動的アセンブリに属性を適用する必要があります。The attribute must be applied to the dynamic assembly. モジュールに適用しても効果はありません。It has no effect if applied to the module.

注意

以降では、 .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1 このメンバーは ReflectionPermission フラグを使用する必要がなくなりました ReflectionPermissionFlag.ReflectionEmitStarting with the .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1, this member no longer requires ReflectionPermission with the ReflectionPermissionFlag.ReflectionEmit flag. (「 リフレクション出力のセキュリティの問題」を参照してください)。この機能を使用するには、アプリケーションで以降を対象とする必要があり .NET Framework 3.5.NET Framework 3.5 ます。(See Security Issues in Reflection Emit.) To use this functionality, your application should target the .NET Framework 3.5.NET Framework 3.5 or later.

適用対象

DefineDynamicModule(String, String, Boolean)

モジュール名、モジュールの保存先のファイル名、および既定のシンボルのライターを使用してシンボル情報を出力する必要があるかどうかを指定して、永続する動的モジュールを定義します。Defines a persistable dynamic module, specifying the module name, the name of the file to which the module will be saved, and whether symbol information should be emitted using the default symbol writer.

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

動的アセンブリの名前。The name of the dynamic module.

fileName
String

動的モジュールの保存先となるファイルの名前。The name of the file to which the dynamic module should be saved.

emitSymbolInfo
Boolean

true の場合、既定のシンボル ライターを使用してシンボル情報が書き込まれます。If true, symbolic information is written using the default symbol writer.

戻り値

ModuleBuilder

定義された動的モジュールを表す ModuleBuilder オブジェクト。A ModuleBuilder object representing the defined dynamic module.

例外

name または fileNamenull です。name or fileName is null.

name または fileName の長さが 0 です。The length of name or fileName is zero.

- または --or- name の長さがシステム定義の最大長を超えています。The length of name is greater than the system-defined maximum length.

- または --or- fileName にパス指定 (ディレクトリ コンポーネントなど) が含まれています。fileName contains a path specification (a directory component, for example).

- または --or- このアセンブリに属する別のファイルの名前と競合しています。There is a conflict with the name of another file that belongs to this assembly.

このアセンブリは既に保存されています。This assembly has been previously saved.

このアセンブリは、Run 属性を持つ動的アセンブリで呼び出されました。This assembly was called on a dynamic assembly with the Run attribute.

既定のシンボル ライターのアセンブリを読み込めません。The assembly for default symbol writer cannot be loaded.

- または --or-

既定のシンボル ライターのインターフェイスを実装する型が見つかりません。The type that implements the default symbol writer interface cannot be found.

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

次のコード例は、を使用して、シンボルの出力を持つ永続的な動的モジュールを作成する方法を示して DefineDynamicModule います。The code example below demonstrates how to create a persistent dynamic module with symbol emission using 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 ます。To define a persistable dynamic module, this assembly needs to be created with the Save or the RunAndSave attribute.

モジュールにアセンブリマニフェストを含める場合、は、アセンブリ name の名前 (つまり、 AssemblyName.Name AssemblyName 動的アセンブリの作成に使用されるのプロパティ) と同じである必要があり、アセンブリを fileName 保存するときに指定したファイル名と同じである必要があります。If you want the module to contain the assembly manifest, name should be the same as the name of the assembly (that is, the AssemblyName.Name property of the AssemblyName used to create the dynamic assembly) and fileName should be the same as the filename you specify when you save the assembly.

モジュールが1つだけのアセンブリでは、そのモジュールにアセンブリマニフェストが含まれている必要があります。In an assembly with only one module, that module should contain the assembly manifest.

注意

動的モジュールをデバッグするときに最適化を抑制するには、を DebuggableAttribute 呼び出す前に、動的アセンブリに属性を適用し DefineDynamicModule ます。To suppress optimizations when debugging dynamic modules, apply the DebuggableAttribute attribute to the dynamic assembly before calling DefineDynamicModule. フラグを使用してのインスタンスを作成 DebuggableAttribute DisableOptimizations し、メソッドを使用してを適用し SetCustomAttribute ます。Create an instance of DebuggableAttribute with the DisableOptimizations flag and apply it using the SetCustomAttribute method. 動的アセンブリに属性を適用する必要があります。The attribute must be applied to the dynamic assembly. モジュールに適用しても効果はありません。It has no effect if applied to the module.

注意

以降では、 .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1 このメンバーは ReflectionPermission フラグを使用する必要がなくなりました ReflectionPermissionFlag.ReflectionEmitStarting with the .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1, this member no longer requires ReflectionPermission with the ReflectionPermissionFlag.ReflectionEmit flag. (「 リフレクション出力のセキュリティの問題」を参照してください)。この機能を使用するには、アプリケーションで以降を対象とする必要があり .NET Framework 3.5.NET Framework 3.5 ます。(See Security Issues in Reflection Emit.) To use this functionality, your application should target the .NET Framework 3.5.NET Framework 3.5 or later.

適用対象