2012-10-29 2 views
1

이 시나리오에 가장 적합한 방법을 알려주시겠습니까? 나는 새로운 프로젝트를 물려 받았고 전에이 시나리오를 보지 못했습니다..Net dll 참고 - 다른 버전의 타사 DLL을 사용하여 PC에 배포

C# Windows Forms 응용 프로그램에서 문서를 생성하기위한 타사 도구에 대한 참조가 있습니다.

사람들의 PC에 설치된 배포 환경에는 v1.0 및 v2.0의 두 가지 다른 버전의 타사 도구가 있습니다.

타사 도구의 v1.0 또는 v2.0에서 작동하도록 Windows Forms 응용 프로그램 만 빌드 할 수 있습니다. 그렇게하기 위해서는 빌드하기 전에 개발 PC에 두 버전 중 하나를 설치해야합니다. 매번 제 3 자 도구를 제거/재설치해야하기 때문에 이것은 분명히 나쁜 접근입니다. 내 PC에 잘못된 버전으로 빌드하는 경우 사용자는

Could not load file or assembly 'Interop.IManage, Version=1.0.0.0, Culture=neutral,  
PublicKeyToken=141424aa94e741g5' or one of its dependencies. The located assembly's 
manifest definition does not match the assembly reference. 

가 GAC 참조를 사용하는 프로젝트에 DLL을 하나의 기준이있을 나타납니다 받는다. 나는이에 대한 변경

C:\WINDOWS\assembly\GAC\Interop.iManage\1.0.0.0__141424aa94e741g\third.partyTool.dll 

는 1.0 버전을 제거하고, 우리는 파일의 간단한 XCOPY을 우리의 응용 프로그램의 배포의 측면에서 2.0

C:\WINDOWS\assembly\GAC\Interop.iManage\2.0.0.0__141424aa94e741g\third.partyTool.dll 

설치, 더 설치는 없다 .

응용 프로그램에서 두 참조를 모두 보유한 다음 배포 된 후에 올바른 참조를 사용하는 방법이 있습니까? 아니면이 문제를 해결할 수있는 배포 방법이 있습니까?

감사

+0

버전 중 하나를 제거해야하는 이유는 완전히 불분명합니다. GAC의 요점은 당신이 할 필요가 없다는 것입니다. 그러니하지 마세요. 별도의 폴더에 참조 어셈블리를 유지하고 프로젝트에서 직접 GAC를 참조하지 마십시오. 하나의 레드 플래그 :이 * 정말로 * .NET 1.x 어셈블리입니까? –

답변

1

당신은 가능한 경우 2.0.0 버전을 사용하는 1.0.0 제 3 자 어셈블리에 대해 항상 구축하고 (앱 설정에서) 바인딩 리디렉션을 수행 할 수 있습니다.

자세한 내용은 http://msdn.microsoft.com/en-us/library/eftw1fys(v=vs.100).aspx을 참조하십시오.

여기에 더 많은 샘플이 있습니다. http://blogs.msdn.com/b/thottams/archive/2007/01/30/introduction-to-versioning-and-bindingredirect.aspx?Redirected=true.

SO 게시물은 바인딩 리디렉션을 설정할 때 공통적 인 문제인 Assembly binding redirect does not work을 설명합니다.

관련 문제