我通过程序包管理器控制台安装了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 。
因此,当我运行应用程序时,出现以下错误: “ 无法加载文件或程序集' Ninject ,版本= 3.3.3.0 ,Culture = neutral,PublicKeyToken = c7192dc5380945e7”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT的异常:0x80131040)“
我通过 ildasm 检查了程序集的清单定义,但没有对Ninject 3.3.3的引用。所有参考均参考Ninject 3.2.0。 同样在 .csproj , packages.config 和 bin 文件夹中,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 版本。那个地方在哪里,有人可以弄清楚吗?