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

Posted

技术标签:

【中文标题】Ninject 程序集与引用的程序集不匹配【英文标题】:Ninject assembly does not match referenced assembly 【发布时间】:2012-05-25 03:39:43 【问题描述】:

设置:

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

问题:

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

什么给了?

【问题讨论】:

所以我只是从我的软件包列表中删除了 Ninject v2.2.1.4。运行/调试时,解决方案 v3.0.0.15 仍然存在。我的问题已解决,但我希望我理解或知道为什么它首先被覆盖。我仔细查看了所有参考资料,v2.2.1.4 没有在任何地方被参考。我什至手动引用了v3 dll,但无济于事,调试时总是复制v2。如果我做了一个构建 v3 将被复制......如果这对其他人没有帮助,但如果有人知道我很想知道的答案,我深表歉意。 TIA... 【参考方案1】:

一些想法:

    只有在您的调试版本中,您才间接引用了 v2 忍者版本。举个例子,我猜你在做什么 您的调试版本您在发布版本时构建您的测试项目 不会构建您的测试项目。 当您在构建时,您是否注意到将 v2 DLL 放入 bin 时正在构建的项目是什么?然后你就会 能够找出引用 v2 构建的项目并成为 能够缩小您的搜索范围(即,如果它不是测试项目,答案会变得更加明显)。 在不同项目中引用多个版本绝不是个好主意。 您是否查看了您的 Web.config 和 App.config 引用所指向的内容?

【讨论】:

以上是关于Ninject 程序集与引用的程序集不匹配的主要内容,如果未能解决你的问题,请参考以下文章

无法加载文件或程序集'Ninject 版本 4.0.0.0

如何摆脱 VS2008 中的“目标程序集不包含服务类型”错误消息?

无法加载文件或程序集。找到的程序集的清单定义与程序集引用不匹配

“找到的程序集的清单定义与程序集引用不匹配”

[程序集清单定义与程序集引用不匹配]分析及解决

.NET Standard:程序集的清单定义与程序集引用不匹配