MetadataLoadContext.CoreAssembly MetadataLoadContext.CoreAssembly MetadataLoadContext.CoreAssembly MetadataLoadContext.CoreAssembly Property


Int32 などの既知の型を格納する「システム アセンブリ」を示すアセンブリを取得または設定します。Gets or sets the assembly that denotes the "system assembly" that houses the well-known types such as Int32.

 property System::Reflection::Assembly ^ CoreAssembly { System::Reflection::Assembly ^ get(); };
public System.Reflection.Assembly CoreAssembly { get; }
member this.CoreAssembly : System.Reflection.Assembly
Public ReadOnly Property CoreAssembly As Assembly


Assembly インスタンス。An Assembly instance.


コアアセンブリは他のアセンブリとは異なる方法で処理されます。これは、これらの既知の型への参照には、通常の型とは異なり、アセンブリ参照が含まれないためです。The core assembly is treated differently than other assemblies because references to these well-known types do not include the assembly reference, unlike normal types.

通常、このアセンブリには "mscorlib" または "netstandard" という名前が付けられます。Typically, this assembly is named "mscorlib" or "netstandard". コアアセンブリが見つからない場合、値nullはになり、その他の多くのリフレクションメソッド (メソッドシグネチャを解析するメソッドを含む) は例外をスローします。If the core assembly cannot be found, the value will be null, and many other reflection methods, including those that parse method signatures, will throw an exception.

は、 coreAssemblyNameコンストラクターに渡されたパラメーターをCoreAssembly MetadataAssemblyResolver メソッドに渡すことMetadataAssemblyResolver.Resolveによって決定されます。The CoreAssembly is determined by passing the coreAssemblyName parameter passed to the MetadataAssemblyResolver constructor to the MetadataAssemblyResolver.Resolve method.

のコンストラクター coreAssemblyNameに引数が指定されてMetadataLoadContextいない場合は、"mscorlib"、"system.string"、"netstandard" などの既定値が使用されます。If no coreAssemblyName argument was specified in the constructor of MetadataLoadContext, then default values are used, including "mscorlib", "System.Runtime" and "netstandard".

指定されたコアアセンブリには、コア型を直接含める必要はありません。The designated core assembly does not need to contain the core types directly. 他のアセンブリに転送することができます。It can type forward them to other assemblies. そのため、指定されたコアアセンブリとして mscorlib ファサードを使用することは完全に許可されています。Thus, it is perfectly permissible to use the mscorlib facade as the designated core assembly.

は、 System.RuntimeのようDllImportAttributeな相互運用関連の疑似カスタム属性型の一部を除外するため、理想的なコアアセンブリではありません。Note that System.Runtime is not an ideal core assembly because it excludes some of the interop-related pseudo-custom attribute types such as DllImportAttribute. ただし、これらの属性に関心がない場合は、サービスを提供できます。However, it can serve if you have no interest in those attributes. コアアセンブリに必要な型が含まれていない場合、CustomAttributes API はこれらの属性をスキップします。The CustomAttributes API will skip those attributes if the core assembly does not include the necessary types.

コアアセンブリが必要になるまで読み込まれません。The core assembly is not loaded until necessary. 次の Api は、コアアセンブリの検索をトリガーしません。The following APIs do not trigger the search for the core assembly:

コアアセンブリが見つからない場合、またはコアアセンブリに型が存在しない場合は、 MetadataLoadContext次のようにの動作に影響します。If a core assembly cannot be found or if the core assembly is missing types, this will affect the behavior of the MetadataLoadContext as follows:

  • 署名を解析する必要がある api または typecs を生成しType 、結果をオブジェクトとして返す場合は、例外がスローされます。APIs that need to parse signatures or typespecs and return the results as Type objects will throw an exception. 次に例を示します。For example:

  • 型を既知のコア型と比較する必要がある Api では、例外はスローされず、比較falseはとして評価されます。APIs that need to compare types to well-known core types will not throw an exception, and the comparison will evaluate to false. たとえば、コアアセンブリIsPrimitiveを指定しない場合、では、という名前Int32の型も含め、すべてのが返さfalseれます。For example, if you do not specify a core assembly, IsPrimitive will return false for everything, even types named Int32. 同様にType.GetTypeCode 、はObjectすべてのを返します。Similarly, Type.GetTypeCode will return Object for everything.

  • メタデータエンティティが擬似カスタム属性としてそのサーフェイスにフラグを設定し、コアアセンブリに擬似カスタム属性の型、必要なコンストラクター、またはコンストラクターのパラメーターの型のいずれかが含まMetadataLoadContextれていない場合、はスローされません。If a metadata entity sets flags that surface as a pseudo-custom attribute, and the core assembly does not contain the pseudo-custom attribute type, the necessary constructor or any of the parameter types of the constructor, the MetadataLoadContext will not throw. 返される属性の一覧から、擬似カスタム属性が省略されます。It will omit the pseudo-custom attribute from the list of returned attributes.