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

Posted

技术标签:

【中文标题】无法加载文件或程序集\'Ninject 版本 4.0.0.0【英文标题】:Could not load file or assembly 'Ninject version 4.0.0.0无法加载文件或程序集'Ninject 版本 4.0.0.0 【发布时间】:2018-03-15 10:40:12 【问题描述】:

程序集引用有问题,更新nuget包时出现猜测。

我从一个对大多数依赖项(拓扑排序)不依赖的项目开始,重新安装了所有 nuget 包并增加了nuspec 文件和所有引用Ninject 3.2.2.0 的packages.config 文件中的版本

<package id="Ninject" version="3.2.2.0" targetFramework="net462" />
<package id="Ninject.Extensions.Conventions" version="3.2.0.0" targetFramework="net462" />

但不起作用。

运行单元测试时仍然出错,似乎是引用了其他版本的Ninject的程序集

单元测试失败:

消息:System.IO.FileLoadException:无法加载文件或程序集“Ninject,Version=4.0.0.0,Culture=neutral,PublicKeyToken=c7192dc5380945e7”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自 HRESULT 的异常:0x80131040) ---- System.IO.FileLoadException:无法加载文件或程序集“Ninject,版本=3.2.0.0,Culture=neutral,PublicKeyToken=c7192dc5380945e7”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)

如何获取有关此的更多信息(谁在调用版本 4.0.0.0 或 3.2.0.0)或解决此问题?

提前致谢。

【问题讨论】:

您的应用所针对的框架版本是什么? @john id="Ninject" version="3.2.2.0" 让我重新表述一下,您要为哪个版本的 .NET Framework 构建您的应用程序? @john 版本 4.6.2 见this answer。 【参考方案1】:

我遇到了同样的问题,我将我的项目从使用 Ninject 版本 3.2.2.0 的 4.5 升级到 4.6.2,我收到了同样的错误消息。

帮助我的是我将 Ninject 包升级到最新版本 (3.3.4) 和 Ninject.Web.Common (3.3.2)。

警告!当我这样做时,我的 NinjectWebCommon.cs 文件被重新生成并且我丢失了所有依赖注入设置,但是一旦我从源代码管理中恢复它,一切都很好。

【讨论】:

【参考方案2】:

我也有同样的问题。我试图编辑我的项目文件以检查我的依赖版本,但没关系。

我还尝试编辑我的 web.config 文件,因为存在依赖版本:

最后,我做了这些:

卸载 Nuget 包管理器中的所有 Ninject 包。 删除 web.config 文件中所有 Ninject 依赖的Assembly 节点。 然后重新安装我之前的 Ninject 包。

此后一切正常。

【讨论】:

以上是关于无法加载文件或程序集'Ninject 版本 4.0.0.0的主要内容,如果未能解决你的问题,请参考以下文章

无法加载文件或程序集“App_Code”或其依赖项之一。

混合模式程序集是针对运行时的“2.0.50727”版本构建的,无法在 4.0 运行时中加载

无法加载文件或程序集 'PayPalAdaptivePaymentsSDK,版本 = 2.12.117.0

混合模式程序集是针对运行时的“v2.0.50727”版本构建的,无法在 4.0 运行时中加载 - 研究的解决方案不起作用

无法加载文件或程序集'netstandard,版本 = 2.0.0.0

无法加载文件或程序集'WebGrease,版本 = 1.5.1.25624 - 或任何其他版本