首页 > 解决方案 > 无法加载文件或程序集“Ninject”

问题描述

我通过包管理器控制台安装了 Ninject 包:

install-package Ninject.Mvc5
install-package Ninject.Web.WebApi

因为我没有指定版本它安装了我想包的最新可用版本(3.3.0)及其依赖项。
在其他依赖项中,它安装了Ninject 3.3.3

然后我意识到我需要3.2.1.0版,所以我卸载了 Ninject.Mvc5 和 Ninject.Web.WebApi 3.3.0 版及其所有依赖项(github 在卸载过程后显示 0 个更改)并安装了 3.2.1.0 版。 Ninject与之配套的是3.2.0版本。

因此,当我运行该应用程序时,出现以下错误:“无法加载文件或程序集' NinjectVersion=3.3.3.0,Culture=neutral,PublicKeyToken=c7192dc5380945e7' 或其依赖项之一。定位程序集的清单定义不匹配程序集引用。(来自 HRESULT 的异常:0x80131040)“

我通过ildasm检查了程序集的清单定义,没有任何对 Ninject 3.3.3 的引用。所有引用均指向 Ninject 3.2.0。同样在.csprojpackages.configbin文件夹 Ninject 版本是 3.2.0。

我可以用 Web.config 解决这个问题:

 <dependentAssembly>
    <assemblyIdentity name="Ninject" publicKeyToken="c7192dc5380945e7" culture="neutral" />
    <bindingRedirect oldVersion="3.3.3.0" newVersion="3.2.0.0" />
  </dependentAssembly>

但很明显,还有一个地方仍然存在对这个已删除的Ninject 3.3.3版本的引用。那个地方在哪里,有人能弄清楚吗?

标签: c#asp.netninjectpackage-managers

解决方案


推荐阅读