2012-07-21 3 views
1

.NET DLL을 참조하는 C# 응용 프로그램이 있습니다.
이 DLL이 내 응용 프로그램의 bin 디렉터리와 GAC에 모두있는 경우 런타임에 CLR에 의해 선택되는 중 하나가 있습니까? GAC에 최신 버전이있는 경우 bin에 표시된 버전 대신 GAC 버전을 사용 하시겠습니까?런타임에 CLR에서 사용되는 DLL

그리고 CLR이 GAC 대신 내 bin에있는 것을 항상 사용하도록하려면 어떻게해야합니까?

According to MSDN

:

CLR을 전역 어셈블리 캐시, 구성 파일에 지정된 코드베이스를 확인하고 다음 응용 프로그램의 디렉토리 및 하위 디렉토리를 확인합니다.

그래서 GAC를 먼저 들여다 본다는 의미입니까?
감사합니다.

답변

1

CLR을 으로 설정하지 않은 경우에 GAC에없는 어셈블리 복사본을 사용합니다. DLL의 이름을 바꾸거나 프로젝트에서 참조하기 전에 [AssemblyVersion]을 변경하여 간단하게 수행 할 수 있습니다. 이를 건너 뛰면 불쾌한 런타임 예외 (DLL Hell이라고도 함)가 호출됩니다.

+0

고마워. 그리고 내 다른 질문에 대답 해 주시겠습니까? GAC에 최신 버전이있는 경우 빈에있는 버전 대신 GAC 버전을 사용 하시겠습니까? – user74042

+0

이것은 "최신"과 아무 관련이 없습니다. 프로그램은 참조 어셈블리에서 얻은 특정 어셈블리 이름과 [AssemblyVersion]을 묻습니다. 해당 버전에서 ** 정확한 ** 일치 만 고려됩니다. 다른 일치하는 전략은 DLL Hell을 호출합니다. –

관련 문제