Proj1과 Proj2의 두 프로젝트 (Proj1은 시작 프로젝트 임)가있는 솔루션이 있습니다.두 번째 버전의 동일한 타사 DLL을 참조하는 방법이 필요합니다.
Proj1은 Proj2 (Proj2의 클래스를 호출하기 위해)를 참조하며 1.0.0.0에서 버전이 지정되는 A라는 타사 DLL을 참조하는 기존 코드를 포함합니다.
Proj2는 동일한 타사 DLL A를 참조하지만 2.0.0.0 버전에서이 프로젝트를 참조합니다.이 프로젝트의 클래스는 1.0.0.0에서 사용할 수 없었던 새로운 구현이 필요하기 때문입니다. , 1. 2. 추가를 Proj2에서 "v2Folder"라는 폴더를 참조 할 때 참으로 "특정 버전"을 전환하고 그것에 v2.0.0.0을 추가 설정 :
지금까지 나는 다음 시도했다 "Copy to Output Directory"를 항상 복사로 지정합니다. 3. app.config에 "probing path"를 추가하여 v2.0.0.0 DLL이있는 하위 폴더를 가리 키도록했습니다.
내가 원하는 것은 v1을 보는 것입니다. 0.0.0은 일반 \ bin \ 폴더에 있고 v2.0.0.0은 \ bin \ v2Folder에 있습니다. Proj1.exe를 실행하면 Proj1의 이전 코드는 여전히 v1.0.0.0의 메서드를 호출합니다. Proj2가 구현 한 것을 호출 할 때만 v2.0.0.0의 메소드를 호출합니다.
문제는 솔루션을 빌드 할 때 v1.0.0.0이 v2.0.0.0으로 바뀌고 빌드 로그에 "A, 버전 = 2.0.0.0, Culture = neutral, PublicKeyToken = blah "and"A, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = blah "를 선택하십시오."A, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = blah "를 임의로 선택하십시오.
누군가 도움을 줄 수 있습니까?
귀하의 제안에 대해 아드리아누에게 감사드립니다. 내 문제는 내 응용 프로그램에서 코드의 다른 부분에서 두 버전을 모두 사용하게하려는 것입니다. 즉, 버전 1과 2를 모두 유지하려고합니다. – codetc
새 버전의 DLL "A"를 사용하도록 Proj1을 업그레이드하지 않는 이유는 무엇입니까? 동일한 DLL의 다른 버전을 사용하는 것은 권장되지 않으며 실제로 AssemblyResolver를 사용하여 해킹하지 않아도 가능하지 않습니다. 다음은이 상황에서 NuGet이 어떻게 당신을 도울 수 있는지 설명하는 링크입니다 : http://blog.davidebbo.com/2011/01/nuget-versioning-part-1-taking-on-dll.html –