建立:
> 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)
是什么赋予了?
解决方法
一些想法:
>只有在您的调试版本中,您才有间接引用v2 Ninject版本.一个很好的例子,我猜你什么时候做您的调试版本在构建版本时构建Test项目不构建您的Test项目.>在构建时,您是否注意到当v2 DLL放入bin时正在构建的项目?那你就是能够弄清楚哪个项目引用了v2构建并且是能够缩小搜索范围(例如,如果不是Test项目,答案会变得更加明显).>在不同项目中引用多个版本绝不是一个好主意.>你看看你的Web.config和App.config引用指向了什么?