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.

public:
 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, 다른 많은 리플렉션 메서드와 메서드 시그니처를 구문 분석을 포함 하는 예외가 throw 됩니다.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.

CoreAssembly 전달 하 여 결정 됩니다 합니다 coreAssemblyName 매개 변수가 전달 되는 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.Runtime" 및 "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 interop 관련 의사 (pseudo) 사용자 지정 특성 유형 중 일부와 같은 제외 하기 때문에 이상적인 core 어셈블리가 아니므로 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.LoadFromStream
  • MetadataLoadContext.LoadFromAssemblyPath
  • MetadataLoadContext.LoadFromByteArray
  • <System.Reflection.Assembly.GetName%2A?displayProperty=nameWithType><System.Reflection.Assembly.GetName%2A?displayProperty=nameWithType>
  • <System.Reflection.Assembly.FullName?displayProperty=nameWithType><System.Reflection.Assembly.FullName?displayProperty=nameWithType>
  • <System.Reflection.Assembly.GetReferencedAssemblies%2A?displayProperty=nameWithType><System.Reflection.Assembly.GetReferencedAssemblies%2A?displayProperty=nameWithType>
  • <System.Reflection.Assembly.GetTypes%2A?displayProperty=nameWithType><System.Reflection.Assembly.GetTypes%2A?displayProperty=nameWithType>
  • <System.Reflection.Assembly.DefinedTypes?displayProperty=nameWithType><System.Reflection.Assembly.DefinedTypes?displayProperty=nameWithType>
  • <System.Reflection.Assembly.GetExportedTypes%2A?displayProperty=nameWithType><System.Reflection.Assembly.GetExportedTypes%2A?displayProperty=nameWithType>
  • <System.Reflection.Assembly.GetForwardedTypes%2A?displayProperty=nameWithType><System.Reflection.Assembly.GetForwardedTypes%2A?displayProperty=nameWithType>
  • <System.Reflection.Assembly.GetType(System.String,System.Boolean,System.Boolean)?displayProperty=nameWithType><System.Reflection.Assembly.GetType(System.String,System.Boolean,System.Boolean)?displayProperty=nameWithType>
  • Type.Name
  • Type.FullName
  • Type.AssemblyQualifiedName

핵심 어셈블리를 찾을 수 없거나 핵심 어셈블리에 형식이 없으면이 영향을 하는 경우는 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:

  • 서명이 나 typespecs를 구문 분석 하 고 결과 반환 해야 하는 Api Type 개체는 예외가 throw 됩니다.APIs that need to parse signatures or typespecs and return the results as Type objects will throw an exception. 예를 들어:For example:

  • 잘 알려진 core 형식으로 형식을 비교 해야 하는 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 돌아갑니다 false 명명 된 형식에도 모든 것에 대 한 Int32합니다.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.

  • 메타 데이터 엔터티를 설정 하는 플래그 노출할 의사 (pseudo) 사용자 지정 특성으로 의사 (pseudo) 사용자 지정 특성 유형, 필요한 생성자 또는 생성자의 매개 변수 형식의 핵심 어셈블리에 없는 경우는 MetadataLoadContext throw 하지 것입니다.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. 반환 된 특성 목록에서 사용자 지정 의사 (pseudo) 특성을 생략 됩니다.It will omit the pseudo-custom attribute from the list of returned attributes.

적용 대상