2011-12-28 4 views
2

Microsoft.SqlServer.SMO.dll을 사용하는 프로젝트가 있습니다.이 프로젝트는 항상 bin 디렉터리로 복사됩니다 (CopyLocal은 true로 설정 됨).C# 어셈블리 위치 확인

그러나 SQL SMO의 다른 버전이 설치되어있을 수 있습니다. Thay의 어셈블리 버전은 10.0.0.0이지만 파일 버전은 10.0.1600.22 및 10.50.2500.0입니다. 최종 사용자가 GAC에 이전 버전의 어셈블리를 설치했을 수 있지만 항상 빈에서 10.50을로드해야합니다.

그래서, 나는 다음과 같은 상황이 : 내 응용 프로그램이 실행 중일 때

Bin -> 10.50.2500.0 
GAC -> 10.0.1600.22 

, GAC에서 어셈블리를로드, 그리고 빈에서 무시됩니다.

어떻게 이러한 동작을 방지 할 수 있습니까? 많은 감사합니다.

+0

CLR은 [AssemblyVersion]에만주의를 기울이고 파일 버전은 무시됩니다. 그래서 GAC에있는 것이 항상 먼저 발견되어 받아 들여집니다. 이것이 정말로 중요하다면 제거해야 할 것입니다. –

답변

1

그것은 모든 엄격한 버전에 관하여이다. 당신은 버전 10.50.2500.0을 참조하는 dll을 참조하고 있지만 정확히이 버전이어야한다는 것은 아무것도 말하지 않습니다.

그래서 당신이해야 할 일은 참조하려는 어셈블리의 속성에서 특정 버전을 참으로 설정하는 것입니다. 이렇게하면이 버전이 정확히로드 될 것입니다.

+0

참조 된 어셈블리의 특정 버전과 강력한 타이핑은 무엇이 있습니까? –