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

4

组件引用出现问题,猜测是在更新NuGet包时发生的。

我从一个没有依赖关系的项目开始(拓扑排序),重新安装了所有NuGet包,并在nuspec文件和所有packages.config文件中将版本引用到Ninject 3.2.2.0。

<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 : Could not load file or assembly 'Ninject, Version=3.2.0.0, Culture=neutral, PublicKeyToken=c7192dc5380945e7' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

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

提前致谢。


你的应用程序针对哪个框架版本? - ProgrammingLlama
@john id="Ninject" version="3.2.2.0" - Mojtaba Khooryani
1
让我重新表述一下,你正在为哪个版本的.NET Framework构建你的应用程序? - ProgrammingLlama
@john 版本 4.6.2 - Mojtaba Khooryani
1
请见 此答案 - NightOwl888
2个回答

3
我有同样的问题。我尝试编辑我的项目文件以检查我的依赖版本,但一切正常。
我还尝试编辑我的web.config文件,因为依赖版本在那里:

enter image description here

最终,这是我所做的事情:
  • 在 Nuget 包管理器中卸载所有 Ninject 包。
  • 删除 web.config 文件中所有 Ninject dependentAssembly 节点。
  • 然后重新安装之前的 Ninject 包。
这样做后一切都正常了。

3

我曾经遇到过同样的问题,我的项目从使用Ninject 3.2.2.0的4.5版本升级到了4.6.2版本后,也遇到了相同的错误信息。

解决方法是将Ninject包升级到最新的版本(3.3.4),以及Ninject.Web.Common(3.3.2)。

注意!这么做会导致NinjectWebCommon.cs文件被重新生成并且丢失了所有的依赖注入设置,但是通过从源代码控制中恢复它,一切都会变得正常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接