8

설정 :Ninject에 어셈블리는 어셈블리 참조와 일치하지 않는

  • ASP.NET MVC3
  • Ninject에의 v2.2.1.4
  • Ninject에의 v3.0.0.15
  • Ninject.MVC3 v3의. N 사용 0.0.6
  • Ninject.Web.Common의 v3.0.0.7

uGet 내 유닛 테스트 프로젝트는 Ninject에의 v2.2.1.4를 참조

내 웹 프로젝트 참조 Ninject에 v3.0.0.15, Ninject.MVC3 및 Ninject.Web.Common

문제 : 승리

탐색기가 내 웹 프로젝트의 bin 폴더에서 열리면 내 솔루션을 빌드하고 Ninject v2.2.1.4가 내 웹 프로젝트의 bin 디렉토리에 복사 된 것을 볼 수 있습니다. 그리고 나서 Ninject v3.0.0.15로 대체되었습니다.

내가 디버깅 F5를 명중 할 때, Ninject.dll의 v3.0.0.15는 Ninject에의 v2.2.1.4 다음과 같은 오류의 원인으로 대체됩니다 : 버전 = 3.0

파일이나 어셈블리 'Ninject에를로드 할 수 없습니다를 .0.0, 문화 = 중립, PublicKeyToken = c7192dc5380945e7 '또는 그 종속성 중 하나. 찾은 어셈블리의 매니페스트 정의가 어셈블리 참조와 일치하지 않습니다. (HRESULT 예외 : 0x80131040)

무엇을 제공합니까?

+0

그래서 패키지 목록에서 Ninject v2.2.1.4를 삭제했습니다. 솔루션 v3.0.0.15를 실행/디버깅 할 때 남아 있습니다. 내 문제는 해결되었지만 처음에 왜 덮어 쓰게되었는지 이해했거나 알고 싶으면 좋겠다. 모든 참조를 신중하게 검토했으며 v2.2.1.4는 어디에서나 참조되지 않았습니다. 나는 수동으로 v3 dll을 참조했지만 아무 소용이 없어도 v2는 디버깅 할 때 항상 복사됩니다. 만약 내가 빌드 v3을 복사 한 것입니다 ... 사과 이것은 다른 사람을 도울 수 없다면 누군가가 내가 알고 싶어 대답을 알고 있다면. 티아 ... –

답변

0

일부의 생각 :

디버그 빌드 당신이 V2 Ninject에 버전에 대한 간접 참조를 가지고 있었다 만에
  1. . 예를 들어, 추측하고 있는데, 릴리스 빌드 이 테스트 프로젝트를 빌드하는 동안 디버그 빌드를 빌드해야합니다.
  2. 빌드 할 때 v2 DLL을 휴지통에 넣었을 때 어떤 프로젝트가 빌드되었는지 알았습니까? 그러면 어떤 프로젝트가 v2 빌드를 참조하는지 파악하고 이 검색 범위를 좁힐 수 있습니다 (즉, 이 테스트 프로젝트가 아닌 일 경우 답변이 상당히 명확 해집니다).
  3. 다른 프로젝트에서 여러 버전을 참조하는 것은 바람직하지 않습니다.
  4. Web.config 및 App.config 참조가 가리키는 내용을 확인 했습니까?
관련 문제