Ninject程序集与引用的程序集不匹配

Ala*_*ock 8 asp.net ninject project-reference assembly-references nuget

建立:

  • ASP.NET MVC3
  • Ninject v2.2.1.4
  • Ninject v3.0.0.15
  • Ninject.MVC3 v3.0.0.6
  • Ninject.Web.Common v3.0.0.7

使用NuGet,我的UnitTest项目引用了Ninject v2.2.1.4

我的Web项目引用了Ninject v3.0.0.15,Ninject.MVC3和Ninject.Web.Common

问题:

随着win explorer在我的web项目的bin文件夹中打开,我构建了我的解决方案,我可以看到Ninject v2.2.1.4被复制到我的web项目的bin目录中.然后被Ninject v3.0.0.15取代.

当我点击F5进行调试时,Ninject.dll v3.0.0.15被Ninject v2.2.1.4取代,导致以下错误:

无法加载文件或程序集'Ninject,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = c7192dc5380945e7'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)

是什么赋予了?

Ted*_*Ted 1

一些想法:

  1. 仅在您的调试版本中,您才间接引用了 v2 Ninject 版本。举个例子,我猜当您进行调试构建时,您会构建测试项目,而发布构建不会构建测试项目。
  2. 当您构建时,您是否注意到当 v2 DLL 被放入 bin 时正在构建什么项目?然后,您将能够找出哪个项目正在引用 v2 版本,并能够缩小搜索范围(即,如果不是测试项目,答案会变得更加明显)。
  3. 在不同项目中引用多个版本绝不是一个好主意。
  4. 您是否检查过 Web.config 和 App.config 引用指向的内容?