MetadataAssemblyResolver.Resolve(MetadataLoadContext, AssemblyName) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
지정된 어셈블리 이름에서 어셈블리를 반환합니다.
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 다른 메타데이터 로드 컨텍스트 또는 다른 형식 공급자(예: 기본 런타임의 자체 리플렉션 시스템)의 어셈블리를 사용할 수 없습니다. 처리기가 이러한 어셈블리를 반환하는 경우 는 MetadataLoadContext 을 FileLoadExceptionthrow합니다.
적용 대상
.NET