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

时间:2012-05-17 14:35:15

标签: asp.net ninject nuget project-reference assembly-references

设定:

  • 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

My Web Project引用Ninject v3.0.0.15,Ninject.MVC3和Ninject.Web.Common

问题:

在我的web项目的bin文件夹中打开win explorer,我构建了我的解决方案,我可以看到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)

是什么给出了?

1 个答案:

答案 0 :(得分:1)

一些想法:

  1. 只有在您的调试版本中,您才有间接引用 v2 Ninject版本。举个例子,我猜你什么时候做 您的调试版本在构建版本时构建Test项目 不会构建您的测试项目。
  2. 在构建时,您是否碰巧注意到当v2 DLL放入bin时正在构建的项目?那你就是 能够弄清楚哪个项目引用了v2构建并且是 能够缩小搜索范围(例如,如果不是测试项目,答案会变得更加明显)。
  3. 在不同项目中引用多个版本绝不是一个好主意。
  4. 您是否查看了Web.config和App.config引用指向的内容?