2014-04-19 13 views

답변

4

는 NuGet 특정 NuGet 패키지 보여줍니다 버전 번호를 의미 가정 I를보고합니다.

우선 NuGet 패키지 버전이 반드시 패키지의 어셈블리 또는 어셈블리 버전과 일치하지는 않습니다. 따라서 바인딩 리디렉션 버전이 다를 수 있습니다. 이것의 좋은 예는 log4net입니다 :

프로젝트가 최신 버전을 참조하는 동안
log4net NuGet package version: 2.0.3 
log4net assembly version: 1.2.13 

그래서 NuGet 패키지 중 하나가 log4net의 이전 버전을 참조하는 경우, 그때 바인딩 리디렉션을 추가 할을 기대하는 log4net 1.2.13을 참조하십시오.

NuGet은 패키지 설치시 바인딩 리디렉션을 추가합니다. 패키지 관리자 콘솔 창에서 Add-BindingRedirect 명령을 실행하여 NuGet을 수동으로 가져 와서 프로젝트의 바인딩 리디렉션을 업데이트 할 수도 있습니다.

Add-BindingRedirect MyProjectName 

당신과 같은 경고를 얻을 전체 솔루션을 재건에있는 경우 : 당신이 충돌 때문에 이전 NuGet 패키지를 업그레이드 할 수 있습니다 경우 바인딩 리디렉션을 고정 또는보고에 보일 것입니다 그리고

MSB3247 - Found conflicts between different versions of the same dependent assembly 

을 그런 식으로 해결됩니다. 그렇지 않으면 응용 프로그램이 특정 어셈블리를로드하지 못할 수 있습니다.

Visual Studio 2013은 적용되는 경우 고려해야 할 또 다른 사항 인 .NET Framework 4.5.1 응용 프로그램에 대한 자동 바인딩 리디렉션을 지원합니다.

+0

저는 최근의 VS13 (프로)에서 실행 중이 라는데, 그게 바로 비자 vi 자동 바인딩입니다 ...이 구절은 web.config에서 제거되고 리다이렉션은 VS에 의해 설정 될 수 있습니까? – justSteve

+0

웹 응용 프로그램을 작성하는 것처럼 보입니다. 문서를 읽는 자동 바인딩 리디렉션은 데스크톱 응용 프로그램에만 해당됩니다. 그러나 Visual Studio에서는 빌드 빌드를 수행 할 때 어셈블리 바인딩 충돌에 대해 알려야합니다. –