다음을 통해 공유


MetadataAssemblyResolver.Resolve(MetadataLoadContext, AssemblyName) 메서드

정의

지정된 어셈블리 이름에서 어셈블리를 반환합니다.

public:
 abstract System::Reflection::Assembly ^ Resolve(System::Reflection::MetadataLoadContext ^ context, System::Reflection::AssemblyName ^ assemblyName);
public abstract System.Reflection.Assembly? Resolve (System.Reflection.MetadataLoadContext context, System.Reflection.AssemblyName assemblyName);
abstract member Resolve : System.Reflection.MetadataLoadContext * System.Reflection.AssemblyName -> System.Reflection.Assembly
Public MustOverride Function Resolve (context As MetadataLoadContext, assemblyName As AssemblyName) As Assembly

매개 변수

context
MetadataLoadContext

검사 전용으로 로드된 Type 개체의 폐쇄형 universe를 나타내는 메타데이터 로드 컨텍스트 개체입니다.

assemblyName
AssemblyName

어셈블리의 이름입니다.

반환

제공된 assemblyName의 어셈블리입니다.

설명

어셈블리에 어셈블리 이름 바인딩은 가 호출되거나 한 어셈블리의 형식에 다른 어셈블리에 대한 종속성이 있을 때 LoadFromAssemblyName 발생합니다. 재정 Resolve 의하는 처리기는 또는 MetadataLoadContext.LoadFromAssemblyPathMetadataLoadContext.LoadFromByteArray 를 사용하여 MetadataLoadContext.LoadFromStream요청된 어셈블리를 로드하고 반환해야 합니다.

어셈블리를 찾지 못했음을 나타내기 위해 처리기는 예외를 throw하는 대신 를 반환 null 해야 합니다. 를 반환하면 null 나중에 해당 이름을 로드하려는 시도가 처리기를 다시 호출하지 않고 실패하도록 오류가 커밋됩니다.

처리기가 예외를 throw하는 경우 예외는 바인딩을 트리거한 작업을 호출한 애플리케이션으로 전달됩니다. 는 MetadataLoadContext 이를 catch하지 않으며 바인딩이 발생하지 않습니다.

두 스레드가 동일한 어셈블리를 로드하기 위해 경합하지 않는 한 처리기는 일반적으로 동일한 이름에 대해 두 번 이상 호출되지 않습니다. 이 경우에도 하나의 결과가 승리하고 이름에 원자성으로 바인딩됩니다.

ref-def 일치를 구성하는 것이 정책이므로 반환 MetadataLoadContext 된 어셈블리에서 의도적으로 ref-def 일치를 수행하지 않습니다. 그것은 또한 피하기 위해 노력 하는 MetadataLoadContext 임의의 제한의 종류.

MetadataLoadContext 다른 메타데이터 로드 컨텍스트 또는 다른 형식 공급자(예: 기본 런타임의 자체 리플렉션 시스템)의 어셈블리를 사용할 수 없습니다. 처리기가 이러한 어셈블리를 반환하는 경우 는 MetadataLoadContextFileLoadExceptionthrow합니다.

적용 대상