부분적으로 정규화된 어셈블리 참조 및 Side-by-Side 실행

업데이트: 2007년 11월

부분적으로 정규화된 어셈블리 참조는 side-by-side 실행 문제의 원인이 될 수 있으므로 응용 프로그램 디렉터리 내의 어셈블리에 바인딩하는 데만 사용할 수 있습니다. 코드에는 부분적으로 정규화된 어셈블리 참조를 사용하지 않도록 하십시오.

코드에서 부분적으로 정규화된 어셈블리 참조를 줄이려면 응용 프로그램 구성 파일에서 <qualifyAssembly> 요소를 사용하여 코드에 나타나는 부분적으로 정규화된 어셈블리 참조를 완전히 정규화할 수 있습니다. <qualifyAssembly> 요소를 사용하여 부분 참조에 설정되지 않은 필드만 지정합니다. fullName 특성에 표시된 어셈블리 ID는 어셈블리 이름, 공개 키, 문화권 및 버전과 같이 어셈블리 이름을 완전하게 정규화하는 데 필요한 모든 정보를 포함해야 합니다.

다음 예제에서는 myAssembly라는 어셈블리를 완전하게 정규화하기 위한 응용 프로그램 구성 파일 항목을 보여 줍니다.

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
<qualifyAssembly partialName="myAssembly" 
fullName="myAssembly,
      version=1.0.0.0, 
publicKeyToken=..., 
      culture=neutral"/> 
</assemblyBinding> 

이렇게 구성 파일을 설정하면 어셈블리 로드 문이 myAssembly를 참조할 때마다 런타임에서 부분적으로 정규화된 myAssembly 참조를 자동으로 정규화된 참조로 변환합니다. 예를 들어, Assembly.Load("myAssembly")는 Assembly.Load("myAssembly, version=1.0.0.0, publicKeyToken=..., culture=neutral")이 됩니다.

참고:

LoadWithPartialName 메서드를 사용하면 부분적으로 참조된 어셈블리가 전역 어셈블리 캐시에서 로드되지 못하게 하는 공용 언어 런타임 제한을 무시할 수 있습니다. 이 메서드는 side-by-side 실행에서 문제를 일으키기 쉬우므로 원격 시나리오에서만 사용해야 합니다.

참고 항목

개념

어셈블리 이름

기타 리소스

공용 언어 런타임의 어셈블리

Side-by-Side 실행 기본 사항