2012-09-07 5 views
1

새 MVC 4 웹 사이트를 만들고 있는데, Unity.MVC3 라이브러리를 사용하여 MVC에 내장 된 DependencyResolver 구성 요소와 통합하려고합니다.어셈블리 바인딩 리디렉션이 작동하지 않습니다.

이전의 훨씬 큰 프로젝트에서 일부 데이터 액세스 DLL을 참조하려고합니다.

내 문제는 Unity.MVC3과 이전 DLL이 서로 다른 버전의 Unity, 1.2.0.0 및 2.1.505.0에 대해 컴파일된다는 것입니다.

<dependentAssembly> 
    <assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersions="1.2.0.0-2.1.505.0" newVersion="2.1.505.0" /> 
    </dependentAssembly> 

을하지만, 난 여전히 다음과 같은 오류 얻을 : I 어셈블리 바인딩 로깅을 설정

Could not load file or assembly 'Microsoft.Practices.Unity, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 

, 마지막 두 줄을 정말처럼 내 web.config 파일에 바인딩 리디렉션을 만드는 시도 상태 :

WRN: Comparing the assembly name resulted in the mismatch: Major Version 
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated. 

왜 내 바인딩 리디렉션이 존중되지 않습니까? 주요 버전 충돌에 대한 검사를 무시할 수있는 방법이 있습니까?

+0

바인딩 리디렉션이 실제로 사용되는지 퓨전 로그에서 볼 수 있습니까? – fsimonazzi

답변

2

키 토큰에 오타가있다 :

<assemblyIdentity name="Microsoft.Practices.Unity" 
    publicKeyToken="31bf856ad364e35" /> 

은 다음과 같아야합니다

<assemblyIdentity name="Microsoft.Practices.Unity" 
    publicKeyToken="31bf3856ad364e35" /> 

does not complain in case of typos을 재 바인딩, 그냥 아무것도하지 않는다.

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.2.0.0" newVersion="2.1.505.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 

에주의 xmlns에, 그것없이, 그것은 자동으로 실패 :

나는이 구성으로 작동, 테스트 응용 프로그램을했습니다.

+0

좋은 캐치! 문제를 해결 한 것 같지 않습니다. 오류가 계속 발생합니다. –

+0

그래, 노력했다. 답변이 업데이트되었습니다. – onof

관련 문제