AppDomain.DefineDynamicAssembly メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
現在のアプリケーション ドメインで動的アセンブリを定義します。
オーバーロード
DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>)
注意事項
Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.
指定した名前、アクセス モード、ストレージ ディレクトリ、証拠、アクセス許可要求、同期オプション、およびカスタム属性を持つ動的アセンブリを定義します。
public:
System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access, System::String ^ dir, System::Security::Policy::Evidence ^ evidence, System::Security::PermissionSet ^ requiredPermissions, System::Security::PermissionSet ^ optionalPermissions, System::Security::PermissionSet ^ refusedPermissions, bool isSynchronized, System::Collections::Generic::IEnumerable<System::Reflection::Emit::CustomAttributeBuilder ^> ^ assemblyAttributes);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir, System.Security.Policy.Evidence evidence, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions, bool isSynchronized, System.Collections.Generic.IEnumerable<System.Reflection.Emit.CustomAttributeBuilder> assemblyAttributes);
[System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir, System.Security.Policy.Evidence evidence, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions, bool isSynchronized, System.Collections.Generic.IEnumerable<System.Reflection.Emit.CustomAttributeBuilder> assemblyAttributes);
member this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet * bool * seq<System.Reflection.Emit.CustomAttributeBuilder> -> System.Reflection.Emit.AssemblyBuilder
[<System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
member this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet * bool * seq<System.Reflection.Emit.CustomAttributeBuilder> -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess, dir As String, evidence As Evidence, requiredPermissions As PermissionSet, optionalPermissions As PermissionSet, refusedPermissions As PermissionSet, isSynchronized As Boolean, assemblyAttributes As IEnumerable(Of CustomAttributeBuilder)) As AssemblyBuilder
パラメーター
- name
- AssemblyName
動的アセンブリの一意の ID。
- access
- AssemblyBuilderAccess
動的アセンブリにアクセスするモード。
- dir
- String
動的アセンブリが保存されるディレクトリの名前。
dirがnullされている場合は、現在のディレクトリが使用されます。
- evidence
- Evidence
動的アセンブリに提供される証拠。 証拠は、ポリシー解決に使用される証拠の最終的なセットとして変更されていない状態で使用されます。
- requiredPermissions
- PermissionSet
必要なアクセス許可要求。
- optionalPermissions
- PermissionSet
オプションのアクセス許可要求。
- refusedPermissions
- PermissionSet
拒否されたアクセス許可要求。
- isSynchronized
- Boolean
true 動的アセンブリ内のモジュール、型、およびメンバーの作成を同期する場合。それ以外の場合は false。
- assemblyAttributes
- IEnumerable<CustomAttributeBuilder>
アセンブリに適用する属性の列挙可能なリスト。属性がない場合は null 。
返品
指定した名前とフィーチャーを持つ動的アセンブリ。
- 属性
例外
name は nullです。
アンロードされたアプリケーション ドメインに対して操作が試行されます。
注釈
動的アセンブリの作成時に適用されない限り、正しく動作しない属性を指定するには、このメソッド オーバーロードを使用します。 たとえば、 SecurityTransparentAttribute や SecurityCriticalAttribute などのセキュリティ属性は、動的アセンブリの作成後に追加された場合、正しく機能しません。
requiredPermissions、optionalPermissions、およびrefusedPermissionsパラメーターに指定されたアクセス許可要求は、evidence パラメーターも指定されている場合、または動的アセンブリが保存されてメモリに再読み込みされる場合にのみ使用されます。
Note
動的アセンブリを出力するコードを開発する場合は、 SecurityPermissionFlag.SkipVerification フラグを refusedPermissions パラメーターに含めうことをお勧めします。 このフラグを含めることで、Microsoft中間言語 (MSIL) が検証されるようになります。 この手法では、検証不可能なコードの意図しない生成が検出されます。それ以外の場合は検出が非常に困難です。 この手法の制限は、完全な信頼を必要とするコードで使用すると、 SecurityException もスローされることです。
動的な Assemblyを定義するときに証拠を提供できるのは、完全に信頼された呼び出し元だけです。 ランタイムは、セキュリティ ポリシーを使用して Evidence をマップして、付与されたアクセス許可を決定します。 部分的に信頼された呼び出し元は、null パラメーターのevidenceを指定する必要があります。
evidenceがnull場合、ランタイムはアクセス許可セット (つまり、現在の許可セットと拒否セット) を呼び出し元のアセンブリから定義されている動的アセンブリにコピーし、ポリシーを解決済みとしてマークします。
動的アセンブリがディスクに保存されている場合、後続の読み込みでは、動的アセンブリが保存された場所に関連付けられているポリシーに基づいて許可が取得されます。
isSynchronizedがtrue場合、結果のAssemblyBuilderの次のメソッドが同期されます:DefineDynamicModule、DefineResource、AddResourceFile、GetDynamicModule、SetEntryPoint、およびSave。 これらのメソッドのうち 2 つが異なるスレッドで呼び出されると、もう一方が完了するまでブロックされます。
このメソッドのオーバーロードは、.NET Framework 3.5 で導入されています。
こちらもご覧ください
適用対象
DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean)
注意事項
Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.
指定した名前、アクセス モード、ストレージ ディレクトリ、証拠、アクセス許可要求、および同期オプションを使用して動的アセンブリを定義します。
public:
virtual System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access, System::String ^ dir, System::Security::Policy::Evidence ^ evidence, System::Security::PermissionSet ^ requiredPermissions, System::Security::PermissionSet ^ optionalPermissions, System::Security::PermissionSet ^ refusedPermissions, bool isSynchronized);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir, System.Security.Policy.Evidence evidence, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions, bool isSynchronized);
[System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir, System.Security.Policy.Evidence evidence, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions, bool isSynchronized);
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet * bool -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet * bool -> System.Reflection.Emit.AssemblyBuilder
[<System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet * bool -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet * bool -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess, dir As String, evidence As Evidence, requiredPermissions As PermissionSet, optionalPermissions As PermissionSet, refusedPermissions As PermissionSet, isSynchronized As Boolean) As AssemblyBuilder
パラメーター
- name
- AssemblyName
動的アセンブリの一意の ID。
- access
- AssemblyBuilderAccess
動的アセンブリにアクセスするモード。
- dir
- String
動的アセンブリが保存されるディレクトリの名前。
dirがnullの場合、ディレクトリは既定で現在のディレクトリに設定されます。
- evidence
- Evidence
動的アセンブリに提供される証拠。 証拠は、ポリシー解決に使用される証拠の最終的なセットとして変更されていない状態で使用されます。
- requiredPermissions
- PermissionSet
必要なアクセス許可要求。
- optionalPermissions
- PermissionSet
オプションのアクセス許可要求。
- refusedPermissions
- PermissionSet
拒否されたアクセス許可要求。
- isSynchronized
- Boolean
true 動的アセンブリ内のモジュール、型、およびメンバーの作成を同期する場合。それ以外の場合は false。
返品
指定した名前とフィーチャーを持つ動的アセンブリ。
実装
- 属性
例外
name は nullです。
アンロードされたアプリケーション ドメインに対して操作が試行されます。
適用対象
DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet)
注意事項
Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. Please see http://go.microsoft.com/fwlink/?LinkId=155570 for more information.
指定した名前、アクセス モード、ストレージ ディレクトリ、証拠、およびアクセス許可要求を使用して動的アセンブリを定義します。
public:
virtual System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access, System::String ^ dir, System::Security::Policy::Evidence ^ evidence, System::Security::PermissionSet ^ requiredPermissions, System::Security::PermissionSet ^ optionalPermissions, System::Security::PermissionSet ^ refusedPermissions);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir, System.Security.Policy.Evidence evidence, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions);
[System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. Please see http://go.microsoft.com/fwlink/?LinkId=155570 for more information.")]
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir, System.Security.Policy.Evidence evidence, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions);
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
[<System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. Please see http://go.microsoft.com/fwlink/?LinkId=155570 for more information.")>]
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess, dir As String, evidence As Evidence, requiredPermissions As PermissionSet, optionalPermissions As PermissionSet, refusedPermissions As PermissionSet) As AssemblyBuilder
パラメーター
- name
- AssemblyName
動的アセンブリの一意の ID。
- access
- AssemblyBuilderAccess
動的アセンブリにアクセスするモード。
- dir
- String
アセンブリが保存されるディレクトリの名前。
dirがnullの場合、ディレクトリは既定で現在のディレクトリに設定されます。
- evidence
- Evidence
動的アセンブリに提供される証拠。 証拠は、ポリシー解決に使用される証拠の最終的なセットとして変更されていない状態で使用されます。
- requiredPermissions
- PermissionSet
必要なアクセス許可要求。
- optionalPermissions
- PermissionSet
オプションのアクセス許可要求。
- refusedPermissions
- PermissionSet
拒否されたアクセス許可要求。
返品
指定した名前とフィーチャーを持つ動的アセンブリ。
実装
- 属性
例外
name は nullです。
アンロードされたアプリケーション ドメインに対して操作が試行されます。
適用対象
DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, PermissionSet, PermissionSet, PermissionSet)
注意事項
Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.
指定した名前、アクセス モード、ストレージ ディレクトリ、およびアクセス許可要求を使用して動的アセンブリを定義します。
public:
virtual System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access, System::String ^ dir, System::Security::PermissionSet ^ requiredPermissions, System::Security::PermissionSet ^ optionalPermissions, System::Security::PermissionSet ^ refusedPermissions);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions);
[System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions);
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
[<System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess, dir As String, requiredPermissions As PermissionSet, optionalPermissions As PermissionSet, refusedPermissions As PermissionSet) As AssemblyBuilder
パラメーター
- name
- AssemblyName
動的アセンブリの一意の ID。
- access
- AssemblyBuilderAccess
動的アセンブリにアクセスするモード。
- dir
- String
アセンブリが保存されるディレクトリの名前。
dirがnullの場合、ディレクトリは既定で現在のディレクトリに設定されます。
- requiredPermissions
- PermissionSet
必要なアクセス許可要求。
- optionalPermissions
- PermissionSet
オプションのアクセス許可要求。
- refusedPermissions
- PermissionSet
拒否されたアクセス許可要求。
返品
指定した名前とフィーチャーを持つ動的アセンブリ。
実装
- 属性
例外
name は nullです。
アンロードされたアプリケーション ドメインに対して操作が試行されます。
適用対象
DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, Evidence, PermissionSet, PermissionSet, PermissionSet)
注意事項
Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.
指定した名前、アクセス モード、証拠、およびアクセス許可要求を使用して動的アセンブリを定義します。
public:
virtual System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access, System::Security::Policy::Evidence ^ evidence, System::Security::PermissionSet ^ requiredPermissions, System::Security::PermissionSet ^ optionalPermissions, System::Security::PermissionSet ^ refusedPermissions);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, System.Security.Policy.Evidence evidence, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions);
[System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, System.Security.Policy.Evidence evidence, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions);
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
[<System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess, evidence As Evidence, requiredPermissions As PermissionSet, optionalPermissions As PermissionSet, refusedPermissions As PermissionSet) As AssemblyBuilder
パラメーター
- name
- AssemblyName
動的アセンブリの一意の ID。
- access
- AssemblyBuilderAccess
動的アセンブリにアクセスするモード。
- evidence
- Evidence
動的アセンブリに提供される証拠。 証拠は、ポリシー解決に使用される証拠の最終的なセットとして変更されていない状態で使用されます。
- requiredPermissions
- PermissionSet
必要なアクセス許可要求。
- optionalPermissions
- PermissionSet
オプションのアクセス許可要求。
- refusedPermissions
- PermissionSet
拒否されたアクセス許可要求。
返品
指定した名前とフィーチャーを持つ動的アセンブリ。
実装
- 属性
例外
name は nullです。
アンロードされたアプリケーション ドメインに対して操作が試行されます。
適用対象
DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Boolean, IEnumerable<CustomAttributeBuilder>)
指定した名前、アクセス モード、ストレージ ディレクトリ、および同期オプションを使用して動的アセンブリを定義します。
public:
System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access, System::String ^ dir, bool isSynchronized, System::Collections::Generic::IEnumerable<System::Reflection::Emit::CustomAttributeBuilder ^> ^ assemblyAttributes);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir, bool isSynchronized, System.Collections.Generic.IEnumerable<System.Reflection.Emit.CustomAttributeBuilder> assemblyAttributes);
member this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * bool * seq<System.Reflection.Emit.CustomAttributeBuilder> -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess, dir As String, isSynchronized As Boolean, assemblyAttributes As IEnumerable(Of CustomAttributeBuilder)) As AssemblyBuilder
パラメーター
- name
- AssemblyName
動的アセンブリの一意の ID。
- access
- AssemblyBuilderAccess
動的アセンブリにアクセスするモード。
- dir
- String
動的アセンブリが保存されるディレクトリの名前。
dirがnullされている場合は、現在のディレクトリが使用されます。
- isSynchronized
- Boolean
true 動的アセンブリ内のモジュール、型、およびメンバーの作成を同期する場合。それ以外の場合は false。
- assemblyAttributes
- IEnumerable<CustomAttributeBuilder>
アセンブリに適用する属性の列挙可能なリスト。属性がない場合は null 。
返品
指定した名前とフィーチャーを持つ動的アセンブリ。
例外
name は nullです。
アンロードされたアプリケーション ドメインに対して操作が試行されます。
注釈
動的アセンブリの作成時に適用されない限り、正しく動作しない属性を指定するには、このメソッド オーバーロードを使用します。 たとえば、 SecurityTransparentAttribute や SecurityCriticalAttribute などのセキュリティ属性は、動的アセンブリの作成後に追加された場合、正しく機能しません。
isSynchronizedがtrue場合、結果のAssemblyBuilderの次のメソッドが同期されます:DefineDynamicModule、DefineResource、AddResourceFile、GetDynamicModule、SetEntryPoint、およびSave。 これらのメソッドのうち 2 つが異なるスレッドで呼び出されると、もう一方が完了するまでブロックされます。
こちらもご覧ください
適用対象
DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, PermissionSet, PermissionSet, PermissionSet)
注意事項
Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.
指定した名前、アクセス モード、およびアクセス許可要求を使用して動的アセンブリを定義します。
public:
virtual System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access, System::Security::PermissionSet ^ requiredPermissions, System::Security::PermissionSet ^ optionalPermissions, System::Security::PermissionSet ^ refusedPermissions);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions);
[System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions);
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
[<System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess, requiredPermissions As PermissionSet, optionalPermissions As PermissionSet, refusedPermissions As PermissionSet) As AssemblyBuilder
パラメーター
- name
- AssemblyName
動的アセンブリの一意の ID。
- access
- AssemblyBuilderAccess
動的アセンブリにアクセスするモード。
- requiredPermissions
- PermissionSet
必要なアクセス許可要求。
- optionalPermissions
- PermissionSet
オプションのアクセス許可要求。
- refusedPermissions
- PermissionSet
拒否されたアクセス許可要求。
返品
指定した名前とフィーチャーを持つ動的アセンブリ。
実装
- 属性
例外
name は nullです。
アンロードされたアプリケーション ドメインに対して操作が試行されます。
適用対象
DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence)
注意事項
Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of DefineDynamicAssembly which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkId=155570 for more information.
指定した名前、アクセス モード、ストレージ ディレクトリ、および証拠を使用して動的アセンブリを定義します。
public:
virtual System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access, System::String ^ dir, System::Security::Policy::Evidence ^ evidence);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir, System.Security.Policy.Evidence evidence);
[System.Obsolete("Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of DefineDynamicAssembly which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkId=155570 for more information.")]
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir, System.Security.Policy.Evidence evidence);
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence -> System.Reflection.Emit.AssemblyBuilder
[<System.Obsolete("Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of DefineDynamicAssembly which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkId=155570 for more information.")>]
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess, dir As String, evidence As Evidence) As AssemblyBuilder
パラメーター
- name
- AssemblyName
動的アセンブリの一意の ID。
- access
- AssemblyBuilderAccess
動的アセンブリにアクセスするモード。
- dir
- String
アセンブリが保存されるディレクトリの名前。
dirがnullの場合、ディレクトリは既定で現在のディレクトリに設定されます。
- evidence
- Evidence
動的アセンブリに提供される証拠。 証拠は、ポリシー解決に使用される証拠の最終的なセットとして変更されていない状態で使用されます。
返品
指定した名前とフィーチャーを持つ動的アセンブリ。
実装
- 属性
例外
name は nullです。
アンロードされたアプリケーション ドメインに対して操作が試行されます。
適用対象
DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>, SecurityContextSource)
指定した名前、アクセス モード、およびカスタム属性を持ち、指定したソースをセキュリティ コンテキストに使用する動的アセンブリを定義します。
public:
System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access, System::Collections::Generic::IEnumerable<System::Reflection::Emit::CustomAttributeBuilder ^> ^ assemblyAttributes, System::Security::SecurityContextSource securityContextSource);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, System.Collections.Generic.IEnumerable<System.Reflection.Emit.CustomAttributeBuilder> assemblyAttributes, System.Security.SecurityContextSource securityContextSource);
member this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * seq<System.Reflection.Emit.CustomAttributeBuilder> * System.Security.SecurityContextSource -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess, assemblyAttributes As IEnumerable(Of CustomAttributeBuilder), securityContextSource As SecurityContextSource) As AssemblyBuilder
パラメーター
- name
- AssemblyName
動的アセンブリの一意の ID。
- access
- AssemblyBuilderAccess
動的アセンブリのアクセス モード。
- assemblyAttributes
- IEnumerable<CustomAttributeBuilder>
アセンブリに適用する属性の列挙可能なリスト。属性がない場合は null 。
- securityContextSource
- SecurityContextSource
セキュリティ コンテキストのソース。
返品
指定した名前とフィーチャーを持つ動的アセンブリ。
例外
name は nullです。
アンロードされたアプリケーション ドメインに対して操作が試行されます。
securityContextSourceの値が列挙値の 1 つではなかった。
注釈
動的アセンブリの作成時に適用されない限り、正しく動作しない属性を指定するには、このメソッド オーバーロードを使用します。 たとえば、 SecurityTransparentAttribute や SecurityCriticalAttribute などのセキュリティ属性は、動的アセンブリの作成後に追加された場合、正しく機能しません。
このメソッドは、現在のアプリケーション ドメインで動的アセンブリを定義する場合にのみ使用してください。 この制限の詳細については、 Load(AssemblyName) メソッドのオーバーロードを参照してください。
適用対象
DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String)
指定した名前、アクセス モード、およびストレージ ディレクトリを使用して動的アセンブリを定義します。
public:
virtual System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access, System::String ^ dir);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir);
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess, dir As String) As AssemblyBuilder
パラメーター
- name
- AssemblyName
動的アセンブリの一意の ID。
- access
- AssemblyBuilderAccess
動的アセンブリにアクセスするモード。
- dir
- String
アセンブリが保存されるディレクトリの名前。
dirがnullの場合、ディレクトリは既定で現在のディレクトリに設定されます。
返品
指定した名前とフィーチャーを持つ動的アセンブリ。
実装
例外
name は nullです。
アンロードされたアプリケーション ドメインに対して操作が試行されます。
例
次の例では、 DefineDynamicAssembly メソッドと AssemblyResolve イベントを示します。
このコード例を実行するには、完全修飾アセンブリ名を指定する必要があります。 完全修飾アセンブリ名を取得する方法については、「アセンブリ 名」を参照してください。
using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
ref class Test
{
public:
static void InstantiateMyDynamicType( AppDomain^ domain )
{
try
{
// You must supply a valid fully qualified assembly name here.
domain->CreateInstance( "Assembly text name, Version, Culture, PublicKeyToken", "MyDynamicType" );
}
catch ( Exception^ e )
{
Console::WriteLine( e->Message );
}
}
static Assembly^ MyResolveEventHandler( Object^ sender, ResolveEventArgs^ args )
{
return DefineDynamicAssembly( dynamic_cast<AppDomain^>(sender) );
}
static Assembly^ DefineDynamicAssembly( AppDomain^ domain )
{
// Build a dynamic assembly using Reflection Emit API.
AssemblyName^ assemblyName = gcnew AssemblyName;
assemblyName->Name = "MyDynamicAssembly";
AssemblyBuilder^ assemblyBuilder = domain->DefineDynamicAssembly( assemblyName, AssemblyBuilderAccess::Run );
ModuleBuilder^ moduleBuilder = assemblyBuilder->DefineDynamicModule( "MyDynamicModule" );
TypeBuilder^ typeBuilder = moduleBuilder->DefineType( "MyDynamicType", TypeAttributes::Public );
ConstructorBuilder^ constructorBuilder = typeBuilder->DefineConstructor( MethodAttributes::Public, CallingConventions::Standard, nullptr );
ILGenerator^ ilGenerator = constructorBuilder->GetILGenerator();
ilGenerator->EmitWriteLine( "MyDynamicType instantiated!" );
ilGenerator->Emit( OpCodes::Ret );
typeBuilder->CreateType();
return assemblyBuilder;
}
};
int main()
{
AppDomain^ currentDomain = AppDomain::CurrentDomain;
Test::InstantiateMyDynamicType( currentDomain ); // Failed!
currentDomain->AssemblyResolve += gcnew ResolveEventHandler( Test::MyResolveEventHandler );
Test::InstantiateMyDynamicType( currentDomain ); // OK!
}
using System;
using System.Reflection;
using System.Reflection.Emit;
class DefinedDynamicAssemblySnippet {
public static void Main() {
AppDomain currentDomain = AppDomain.CurrentDomain;
InstantiateMyDynamicType(currentDomain); // Failed!
currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);
InstantiateMyDynamicType(currentDomain); // OK!
}
static void InstantiateMyDynamicType(AppDomain domain) {
try {
// You must supply a valid fully qualified assembly name here.
domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken", "MyDynamicType");
} catch (Exception e) {
Console.WriteLine(e.Message);
}
}
static Assembly MyResolveEventHandler(object sender, ResolveEventArgs args) {
return DefineDynamicAssembly((AppDomain) sender);
}
static Assembly DefineDynamicAssembly(AppDomain domain) {
// Build a dynamic assembly using Reflection Emit API.
AssemblyName assemblyName = new AssemblyName();
assemblyName.Name = "MyDynamicAssembly";
AssemblyBuilder assemblyBuilder = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run);
ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MyDynamicModule");
TypeBuilder typeBuilder = moduleBuilder.DefineType("MyDynamicType", TypeAttributes.Public);
ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, null);
ILGenerator ilGenerator = constructorBuilder.GetILGenerator();
ilGenerator.EmitWriteLine("MyDynamicType instantiated!");
ilGenerator.Emit(OpCodes.Ret);
typeBuilder.CreateType();
return assemblyBuilder;
}
}
open System
open System.Reflection
open System.Reflection.Emit
let instantiateMyDynamicType (domain: AppDomain) =
try
// You must supply a valid fully qualified assembly name here.
domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken", "MyDynamicType")
|> ignore
with e ->
printfn $"{e.Message}"
let defineDynamicAssembly (domain: AppDomain) =
// Build a dynamic assembly using Reflection Emit API.
let assemblyName = AssemblyName()
assemblyName.Name <- "MyDynamicAssembly"
let assemblyBuilder = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run)
let moduleBuilder = assemblyBuilder.DefineDynamicModule "MyDynamicModule"
let typeBuilder = moduleBuilder.DefineType("MyDynamicType", TypeAttributes.Public)
let constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, null)
let ilGenerator = constructorBuilder.GetILGenerator()
ilGenerator.EmitWriteLine "MyDynamicType instantiated!"
ilGenerator.Emit OpCodes.Ret
typeBuilder.CreateType() |> ignore
assemblyBuilder
let myResolveEventHandler (sender: obj) _ =
defineDynamicAssembly (sender :?> AppDomain)
:> Assembly
let currentDomain = AppDomain.CurrentDomain
instantiateMyDynamicType currentDomain // Failed!
currentDomain.add_AssemblyResolve(ResolveEventHandler myResolveEventHandler)
instantiateMyDynamicType currentDomain // OK!
Imports System.Reflection
Imports System.Reflection.Emit
Module Test
Sub Main()
Dim currentDomain As AppDomain = AppDomain.CurrentDomain
InstantiateMyDynamicType(currentDomain) 'Failed!
AddHandler currentDomain.AssemblyResolve, AddressOf MyResolveEventHandler
InstantiateMyDynamicType(currentDomain) 'OK!
End Sub
Sub InstantiateMyDynamicType(domain As AppDomain)
Try
' You must supply a valid fully qualified assembly name here.
domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken", "MyDynamicType")
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
Function MyResolveEventHandler(sender As Object, args As ResolveEventArgs) As System.Reflection.Assembly
Return DefineDynamicAssembly(DirectCast(sender, AppDomain))
End Function 'MyResolveEventHandler
Function DefineDynamicAssembly(domain As AppDomain) As System.Reflection.Assembly
' Build a dynamic assembly using Reflection Emit API.
Dim assemblyName As New AssemblyName()
assemblyName.Name = "MyDynamicAssembly"
Dim assemblyBuilder As AssemblyBuilder = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run)
Dim moduleBuilder As ModuleBuilder = assemblyBuilder.DefineDynamicModule("MyDynamicModule")
Dim typeBuilder As TypeBuilder = moduleBuilder.DefineType("MyDynamicType", TypeAttributes.Public)
Dim constructorBuilder As ConstructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, Nothing)
Dim ilGenerator As ILGenerator = constructorBuilder.GetILGenerator()
ilGenerator.EmitWriteLine("MyDynamicType instantiated!")
ilGenerator.Emit(OpCodes.Ret)
typeBuilder.CreateType()
Return assemblyBuilder
End Function 'DefineDynamicAssembly
End Module 'Test
注釈
このメソッドは、現在のアプリケーション ドメインで動的アセンブリを定義する場合にのみ使用してください。 詳細については、 Load(AssemblyName) メソッドのオーバーロードを参照してください。
Note
動的アセンブリを出力するコードの開発時には、証拠とアクセス許可を指定し、動的アセンブリに必要な証拠を指定し、DefineDynamicAssemblyにSecurityPermissionFlag.SkipVerificationを含めるrefusedPermissions メソッドのオーバーロードを使用することをお勧めします。
SkipVerification パラメーターにrefusedPermissionsを含めると、MSIL が検証されます。 この手法の制限は、完全な信頼を要求するコードで使用すると、 SecurityException がスローされることです。
適用対象
DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, Evidence)
注意事項
Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.
指定した名前、アクセス モード、および証拠を使用して動的アセンブリを定義します。
public:
virtual System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access, System::Security::Policy::Evidence ^ evidence);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, System.Security.Policy.Evidence evidence);
[System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, System.Security.Policy.Evidence evidence);
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * System.Security.Policy.Evidence -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * System.Security.Policy.Evidence -> System.Reflection.Emit.AssemblyBuilder
[<System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * System.Security.Policy.Evidence -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * System.Security.Policy.Evidence -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess, evidence As Evidence) As AssemblyBuilder
パラメーター
- name
- AssemblyName
動的アセンブリの一意の ID。
- access
- AssemblyBuilderAccess
動的アセンブリにアクセスするモード。
- evidence
- Evidence
動的アセンブリに提供される証拠。 証拠は、ポリシー解決に使用される証拠の最終的なセットとして変更されていない状態で使用されます。
返品
指定した名前とフィーチャーを持つ動的アセンブリ。
実装
- 属性
例外
name は nullです。
アンロードされたアプリケーション ドメインに対して操作が試行されます。
適用対象
DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)
指定した名前、アクセス モード、およびカスタム属性を持つ動的アセンブリを定義します。
public:
System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access, System::Collections::Generic::IEnumerable<System::Reflection::Emit::CustomAttributeBuilder ^> ^ assemblyAttributes);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, System.Collections.Generic.IEnumerable<System.Reflection.Emit.CustomAttributeBuilder> assemblyAttributes);
member this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * seq<System.Reflection.Emit.CustomAttributeBuilder> -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess, assemblyAttributes As IEnumerable(Of CustomAttributeBuilder)) As AssemblyBuilder
パラメーター
- name
- AssemblyName
動的アセンブリの一意の ID。
- access
- AssemblyBuilderAccess
動的アセンブリのアクセス モード。
- assemblyAttributes
- IEnumerable<CustomAttributeBuilder>
アセンブリに適用する属性の列挙可能なリスト。属性がない場合は null 。
返品
指定した名前とフィーチャーを持つ動的アセンブリ。
例外
name は nullです。
アンロードされたアプリケーション ドメインに対して操作が試行されます。
例
次のコード サンプルは、 SecurityTransparentAttributeを持つ動的アセンブリを作成する方法を示しています。 この属性は、 CustomAttributeBuilder オブジェクトの配列の要素として指定する必要があります。
CustomAttributeBuilderを作成する最初の手順は、属性のコンストラクターを取得することです。 コンストラクターにはパラメーターがないため、 GetConstructor メソッドは、パラメーターの型を表すために、 Type オブジェクトの空の配列を使用して呼び出されます。 2 番目の手順では、結果のConstructorInfo オブジェクトを、引数を表すCustomAttributeBuilder型の空の配列と共に、Object クラスのコンストラクターに渡します。
結果の CustomAttributeBuilder は、配列の唯一の要素として DefineDynamicAssembly メソッドに渡されます。
このコード例では、新しい動的アセンブリでモジュールと型を定義し、アセンブリの属性を表示します。
using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
using namespace System::Security;
void main()
{
// Create a CustomAttributeBuilder for the assembly attribute.
//
// SecurityTransparentAttribute has a parameterless constructor,
// which is retrieved by passing an array of empty types for the
// constructor's parameter types. The CustomAttributeBuilder is
// then created by passing the ConstructorInfo and an empty array
// of objects to represent the parameters.
//
ConstructorInfo^ transparentCtor =
SecurityTransparentAttribute::typeid->GetConstructor(
Type::EmptyTypes);
CustomAttributeBuilder^ transparent = gcnew CustomAttributeBuilder(
transparentCtor,
gcnew array<Object^> {} );
// Create a dynamic assembly using the attribute. The attribute is
// passed as an array with one element.
AssemblyName^ aName = gcnew AssemblyName("EmittedAssembly");
AssemblyBuilder^ ab = AppDomain::CurrentDomain->DefineDynamicAssembly(
aName,
AssemblyBuilderAccess::Run,
gcnew array<CustomAttributeBuilder^> { transparent } );
ModuleBuilder^ mb = ab->DefineDynamicModule( aName->Name );
TypeBuilder^ tb = mb->DefineType(
"MyDynamicType",
TypeAttributes::Public );
tb->CreateType();
Console::WriteLine("{0}\nAssembly attributes:", ab);
for each (Attribute^ attr in ab->GetCustomAttributes(true))
{
Console::WriteLine("\t{0}", attr);
}
};
/* This code example produces the following output:
EmittedAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Assembly attributes:
System.Security.SecurityTransparentAttribute
*/
using System;
using System.Reflection;
using System.Reflection.Emit;
using System.Security;
class CustomAttributeBuilderSnippet
{
static void Main()
{
// Create a CustomAttributeBuilder for the assembly attribute.
//
// SecurityTransparentAttribute has a parameterless constructor,
// which is retrieved by passing an array of empty types for the
// constructor's parameter types. The CustomAttributeBuilder is
// then created by passing the ConstructorInfo and an empty array
// of objects to represent the parameters.
//
ConstructorInfo transparentCtor =
typeof(SecurityTransparentAttribute).GetConstructor(
Type.EmptyTypes);
CustomAttributeBuilder transparent = new CustomAttributeBuilder(
transparentCtor,
new Object[] {} );
// Create a dynamic assembly using the attribute. The attribute is
// passed as an array with one element.
AssemblyName aName = new AssemblyName("EmittedAssembly");
AssemblyBuilder ab = AppDomain.CurrentDomain.DefineDynamicAssembly(
aName,
AssemblyBuilderAccess.Run,
new CustomAttributeBuilder[] { transparent } );
ModuleBuilder mb = ab.DefineDynamicModule( aName.Name );
TypeBuilder tb = mb.DefineType(
"MyDynamicType",
TypeAttributes.Public );
tb.CreateType();
Console.WriteLine("{0}\nAssembly attributes:", ab);
foreach (Attribute attr in ab.GetCustomAttributes(true))
{
Console.WriteLine("\t{0}", attr);
}
}
}
/* This code example produces the following output:
EmittedAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Assembly attributes:
System.Security.SecurityTransparentAttribute
*/
open System
open System.Reflection
open System.Reflection.Emit
open System.Security
// Create a CustomAttributeBuilder for the assembly attribute.
//
// SecurityTransparentAttribute has a parameterless constructor,
// which is retrieved by passing an array of empty types for the
// constructor's parameter types. The CustomAttributeBuilder is
// then created by passing the ConstructorInfo and an empty array
// of objects to represent the parameters.
//
let transparentCtor =
typeof<SecurityTransparentAttribute>.GetConstructor(Type.EmptyTypes)
let transparent = CustomAttributeBuilder(transparentCtor, [||])
// Create a dynamic assembly using the attribute. The attribute is
// passed as an array with one element.
let aName = AssemblyName "EmittedAssembly"
let ab = AppDomain.CurrentDomain.DefineDynamicAssembly(
aName,
AssemblyBuilderAccess.Run,
[| transparent |])
let mb = ab.DefineDynamicModule aName.Name
let tb = mb.DefineType(
"MyDynamicType",
TypeAttributes.Public )
tb.CreateType() |> ignore
printfn $"{ab}\nAssembly attributes:"
for attr in ab.GetCustomAttributes true do
printfn $"\t{attr}"
(* This code example produces the following output:
EmittedAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Assembly attributes:
System.Security.SecurityTransparentAttribute
*)
Imports System.Reflection
Imports System.Reflection.Emit
Imports System.Security
Module Example
Sub Main()
' Create a CustomAttributeBuilder for the assembly attribute.
'
' SecurityTransparentAttribute has a parameterless constructor,
' which is retrieved by passing an array of empty types for the
' constructor's parameter types. The CustomAttributeBuilder is
' then created by passing the ConstructorInfo and an empty array
' of objects to represent the parameters.
'
Dim transparentCtor As ConstructorInfo = _
GetType(SecurityTransparentAttribute).GetConstructor( _
Type.EmptyTypes)
Dim transparent As New CustomAttributeBuilder( _
transparentCtor, _
New Object() {} )
' Create a dynamic assembly Imports the attribute. The attribute is
' passed as an array with one element.
Dim aName As New AssemblyName("EmittedAssembly")
Dim ab As AssemblyBuilder = _
AppDomain.CurrentDomain.DefineDynamicAssembly( _
aName, _
AssemblyBuilderAccess.Run, _
New CustomAttributeBuilder() { transparent } )
Dim mb As ModuleBuilder = ab.DefineDynamicModule( aName.Name )
Dim tb As TypeBuilder = mb.DefineType( _
"MyDynamicType", _
TypeAttributes.Public )
tb.CreateType()
Console.WriteLine("{0}" & vbLf & "Assembly attributes:", ab)
For Each attr As Attribute In ab.GetCustomAttributes(True)
Console.WriteLine(vbTab & "{0}", attr)
Next
End Sub
End Module
' This code example produces the following output:
'
'EmittedAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
'Assembly attributes:
' System.Security.SecurityTransparentAttribute
注釈
動的アセンブリの作成時に適用されない限り、正しく動作しない属性を指定するには、このメソッド オーバーロードを使用します。 たとえば、 SecurityTransparentAttribute や SecurityCriticalAttribute などのセキュリティ属性は、動的アセンブリの作成後に追加された場合、正しく機能しません。
このメソッドは、現在のアプリケーション ドメインで動的アセンブリを定義する場合にのみ使用してください。 この制限の詳細については、 Load(AssemblyName) メソッドのオーバーロードを参照してください。
このメソッドのオーバーロードは、.NET Framework 3.5 で導入されています。
こちらもご覧ください
適用対象
DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess)
指定した名前とアクセス モードを持つ動的アセンブリを定義します。
public:
virtual System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access);
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess) As AssemblyBuilder
パラメーター
- name
- AssemblyName
動的アセンブリの一意の ID。
- access
- AssemblyBuilderAccess
動的アセンブリのアクセス モード。
返品
指定した名前とアクセス モードを持つ動的アセンブリ。
実装
例外
name は nullです。
アンロードされたアプリケーション ドメインに対して操作が試行されます。
例
次の例では、 DefineDynamicAssembly メソッドと AssemblyResolve イベントを示します。
このコード例を実行するには、完全修飾アセンブリ名を指定する必要があります。 完全修飾アセンブリ名を取得する方法については、「アセンブリ 名」を参照してください。
using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
ref class Test
{
public:
static void InstantiateMyDynamicType( AppDomain^ domain )
{
try
{
// You must supply a valid fully qualified assembly name here.
domain->CreateInstance( "Assembly text name, Version, Culture, PublicKeyToken", "MyDynamicType" );
}
catch ( Exception^ e )
{
Console::WriteLine( e->Message );
}
}
static Assembly^ MyResolveEventHandler( Object^ sender, ResolveEventArgs^ args )
{
return DefineDynamicAssembly( dynamic_cast<AppDomain^>(sender) );
}
static Assembly^ DefineDynamicAssembly( AppDomain^ domain )
{
// Build a dynamic assembly using Reflection Emit API.
AssemblyName^ assemblyName = gcnew AssemblyName;
assemblyName->Name = "MyDynamicAssembly";
AssemblyBuilder^ assemblyBuilder = domain->DefineDynamicAssembly( assemblyName, AssemblyBuilderAccess::Run );
ModuleBuilder^ moduleBuilder = assemblyBuilder->DefineDynamicModule( "MyDynamicModule" );
TypeBuilder^ typeBuilder = moduleBuilder->DefineType( "MyDynamicType", TypeAttributes::Public );
ConstructorBuilder^ constructorBuilder = typeBuilder->DefineConstructor( MethodAttributes::Public, CallingConventions::Standard, nullptr );
ILGenerator^ ilGenerator = constructorBuilder->GetILGenerator();
ilGenerator->EmitWriteLine( "MyDynamicType instantiated!" );
ilGenerator->Emit( OpCodes::Ret );
typeBuilder->CreateType();
return assemblyBuilder;
}
};
int main()
{
AppDomain^ currentDomain = AppDomain::CurrentDomain;
Test::InstantiateMyDynamicType( currentDomain ); // Failed!
currentDomain->AssemblyResolve += gcnew ResolveEventHandler( Test::MyResolveEventHandler );
Test::InstantiateMyDynamicType( currentDomain ); // OK!
}
using System;
using System.Reflection;
using System.Reflection.Emit;
class DefinedDynamicAssemblySnippet {
public static void Main() {
AppDomain currentDomain = AppDomain.CurrentDomain;
InstantiateMyDynamicType(currentDomain); // Failed!
currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);
InstantiateMyDynamicType(currentDomain); // OK!
}
static void InstantiateMyDynamicType(AppDomain domain) {
try {
// You must supply a valid fully qualified assembly name here.
domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken", "MyDynamicType");
} catch (Exception e) {
Console.WriteLine(e.Message);
}
}
static Assembly MyResolveEventHandler(object sender, ResolveEventArgs args) {
return DefineDynamicAssembly((AppDomain) sender);
}
static Assembly DefineDynamicAssembly(AppDomain domain) {
// Build a dynamic assembly using Reflection Emit API.
AssemblyName assemblyName = new AssemblyName();
assemblyName.Name = "MyDynamicAssembly";
AssemblyBuilder assemblyBuilder = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run);
ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MyDynamicModule");
TypeBuilder typeBuilder = moduleBuilder.DefineType("MyDynamicType", TypeAttributes.Public);
ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, null);
ILGenerator ilGenerator = constructorBuilder.GetILGenerator();
ilGenerator.EmitWriteLine("MyDynamicType instantiated!");
ilGenerator.Emit(OpCodes.Ret);
typeBuilder.CreateType();
return assemblyBuilder;
}
}
open System
open System.Reflection
open System.Reflection.Emit
let instantiateMyDynamicType (domain: AppDomain) =
try
// You must supply a valid fully qualified assembly name here.
domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken", "MyDynamicType")
|> ignore
with e ->
printfn $"{e.Message}"
let defineDynamicAssembly (domain: AppDomain) =
// Build a dynamic assembly using Reflection Emit API.
let assemblyName = AssemblyName()
assemblyName.Name <- "MyDynamicAssembly"
let assemblyBuilder = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run)
let moduleBuilder = assemblyBuilder.DefineDynamicModule "MyDynamicModule"
let typeBuilder = moduleBuilder.DefineType("MyDynamicType", TypeAttributes.Public)
let constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, null)
let ilGenerator = constructorBuilder.GetILGenerator()
ilGenerator.EmitWriteLine "MyDynamicType instantiated!"
ilGenerator.Emit OpCodes.Ret
typeBuilder.CreateType() |> ignore
assemblyBuilder
let myResolveEventHandler (sender: obj) _ =
defineDynamicAssembly (sender :?> AppDomain)
:> Assembly
let currentDomain = AppDomain.CurrentDomain
instantiateMyDynamicType currentDomain // Failed!
currentDomain.add_AssemblyResolve(ResolveEventHandler myResolveEventHandler)
instantiateMyDynamicType currentDomain // OK!
Imports System.Reflection
Imports System.Reflection.Emit
Module Test
Sub Main()
Dim currentDomain As AppDomain = AppDomain.CurrentDomain
InstantiateMyDynamicType(currentDomain) 'Failed!
AddHandler currentDomain.AssemblyResolve, AddressOf MyResolveEventHandler
InstantiateMyDynamicType(currentDomain) 'OK!
End Sub
Sub InstantiateMyDynamicType(domain As AppDomain)
Try
' You must supply a valid fully qualified assembly name here.
domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken", "MyDynamicType")
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
Function MyResolveEventHandler(sender As Object, args As ResolveEventArgs) As System.Reflection.Assembly
Return DefineDynamicAssembly(DirectCast(sender, AppDomain))
End Function 'MyResolveEventHandler
Function DefineDynamicAssembly(domain As AppDomain) As System.Reflection.Assembly
' Build a dynamic assembly using Reflection Emit API.
Dim assemblyName As New AssemblyName()
assemblyName.Name = "MyDynamicAssembly"
Dim assemblyBuilder As AssemblyBuilder = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run)
Dim moduleBuilder As ModuleBuilder = assemblyBuilder.DefineDynamicModule("MyDynamicModule")
Dim typeBuilder As TypeBuilder = moduleBuilder.DefineType("MyDynamicType", TypeAttributes.Public)
Dim constructorBuilder As ConstructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, Nothing)
Dim ilGenerator As ILGenerator = constructorBuilder.GetILGenerator()
ilGenerator.EmitWriteLine("MyDynamicType instantiated!")
ilGenerator.Emit(OpCodes.Ret)
typeBuilder.CreateType()
Return assemblyBuilder
End Function 'DefineDynamicAssembly
End Module 'Test
注釈
このメソッドは、現在のアプリケーション ドメインで動的アセンブリを定義する場合にのみ使用してください。 詳細については、 Load(AssemblyName) メソッドのオーバーロードを参照してください。
Note
動的アセンブリを出力するコードの開発時には、証拠とアクセス許可を指定し、動的アセンブリに必要な証拠を指定し、DefineDynamicAssemblyにSecurityPermissionFlag.SkipVerificationを含めるrefusedPermissions メソッドのオーバーロードを使用することをお勧めします。
SkipVerification パラメーターにrefusedPermissionsを含めると、MSIL が検証されます。 この手法の制限は、完全な信頼を要求するコードで使用すると、 SecurityException がスローされることです。