나는 이것을 잠시 조사해 왔지만 해결되지 않았습니다. 다음과 같은 오류 메시지가 나타납니다.
Compiler Error Message: CS1705: Assembly 'My.Model, Version=1.1.4422.23773, Culture=neutral,
PublicKeyToken=bfde95ba233094b2' uses
'Common, Version=3.3.4273.24368, Culture=neutral, PublicKeyToken=bfde95ba233094b2'
which has a higher version than referenced assembly
'Common, Version=3.3.4269.17112, Culture=neutral, PublicKeyToken=bfde95ba233094b2'
c:\WINDOWS\assembly\GAC_MSIL\Common\3.3.4269.17112__bfde95ba233094b2\Common.dll:
(Location of symbol related to previous error)
웹 서버에서 Server 2003을 실행하고 있습니다. c : \ windows \ assembly로 이동하여 실제로 Common.dll의 3 가지 버전이 나열되어 있음을 확인했습니다. 나열된 가장 높은 버전은 3.3.4269.17112입니다.
버전이 3.3.4273.24368 인 dll을 어셈블리 디렉터리에 복사했습니다. 그런 다음 코드를 재 컴파일하고 재배포했습니다 (아마도 과도하지만 오 잘). 새 세션에서 브라우저를 열고 사이트 URL로 다시 이동했을 때 여전히 동일한 메시지가 나타납니다.
Windows 탐색기를 사용하여 더 높은 버전의 Common.dll이 목록에 있는지 확인할 수 있습니다.
이 문제를 해결하기 위해 무엇을 더 조사 할 수 있습니까? 이전 버전을 가리 키도록 어셈블리의 참조를 변경하고 싶지 않습니다.
답변
시도해 볼 수있는 3 가지 아이디어 :
- 모든 dll이 동일한 버전의 Common에 대해 컴파일되었는지 확인하십시오.
- 솔루션에 파일 참조 대신 프로젝트 참조가 있는지 확인하십시오.
- web.config에서 바인딩 리디렉션 을 사용 합니다. ( 웨이 백 머신에서 원래 링크 된 버전 )
답변
“재 구축”이 실제로 재 구축되지 않았기 때문에이 오류가 발생했습니다.
해결책 : Visual Studio를 닫고 실제로 bin 폴더를 삭제 한 다음 다시 빌드하면 더 잘 작동 할 수 있습니다.
또한 때로는 Visual Studio가 참조에 대해 속하므로 파일 HintPath
에서 확인하십시오 .csproj
.
답변
NuGet을 사용하는 경우 ‘Manage NuGet Packages For Solution’ 으로 이동하여 문제를 일으키는 패키지를 찾고 업데이트를 누르는 것이 좋습니다. 그런 다음 모든 패키지를 최신 버전으로 가져와 문제를 해결해야합니다.
빠르고 쉽습니다.
답변
내 문제는 다른 버전을 가진 동일한 dll의 2 개의 다른 사본을 참조하는 2 개의 프로젝트가 있다는 것입니다. 둘 다 제거하고 동일한 dll 파일을 참조하는지 확인하여 수정했습니다.
답변
한 가지 가능한 원인은 두 번째 어셈블리가 GAC에 설치되고 더 높은 버전 번호를 가진 첫 번째 어셈블리가 프로젝트의 참조에 추가되기 때문입니다. 이를 확인하려면 프로젝트 참조에서 어셈블리를 두 번 클릭하고 개체 브라우저에 같은 이름의 다른 어셈블리가 있는지 확인합니다.
이 경우 gacutil.exe 유틸리티를 사용하여 GAC에서 두 번째 어셈블리를 제거합니다. 예를 들어 64 비트 어셈블리 인 경우 :
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64\gacutil.exe -u <assembly_name>
답변
참조로 이동하여 문제를 일으키는 dll 파일의 새 참조를 추가하고 모든 dll이 동일한 버전에 대해 컴파일되었는지 확인하십시오. 저에게도 효과가 있습니다. 여러분에게도 효과가 있기를 바랍니다.
답변
우리 팀은 빌드 환경에서이 문제에 직면했습니다. 이 문제는 .csproj 파일의 <HintPath> 요소의 차이로 인해 발생했습니다.
우리의 공통 어셈블리에는 참조 어셈블리가 포함 된 디렉터리에 대한 올바른 상대 경로가 있습니다. 종속 어셈블리에는 이전 디렉터리 구조의 경로가 있습니다. GAC가 C : \ Program Files에 설치된 올바른 버전에 대한 종속 참조를 확인함에 따라 솔루션은 dev 컴퓨터에서 성공적으로 컴파일되었습니다. 빌드 환경에는 어셈블리의 레거시 설치가 있었지만 (아무것도 없었어야했지만) 폴백되어 오류가 발생했습니다. 텍스트 편집기에서 <HintPath>를 업데이트하면 문제가 해결되었습니다.