9

设置:

  • ASP.NET MVC3
  • 忍者 v2.2.1.4
  • 忍者 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

问题:

在我的 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)

是什么赋予了?

4

1 回答 1

1

一些想法:

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