在NinjectWebCommon.cs
我有这个:
private static IKernel CreateKernel()
{
var kernel = new StandardKernel();
try
{
kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
RegisterServices(kernel);
return kernel;
}
catch
{
kernel.Dispose();
throw;
}
}
当我运行我的ASP.NET MVC应用程序时,它崩溃了该方法说:
An exception of type 'System.IO.FileLoadException' occurred in Ninject.dll but was not handled in user code
Additional information: Could not load file or assembly 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
我已从References中删除了我的Ninject DLL并再次从NuGet管理器添加它们,现在我的包文件看起来像这样,但仍然出现错误:
<package id="Ninject" version="3.2.2.0" targetFramework="net451" />
<package id="Ninject.MVC3" version="3.2.1.0" targetFramework="net451" />
<package id="Ninject.Web.Common" version="3.2.3.0" targetFramework="net451" />
<package id="Ninject.Web.Common.WebHost" version="3.2.3.0" targetFramework="net451" />
我还应该做些什么?
答案 0 :(得分:0)
如果您想轻松找出哪个项目使用的是什么版本,解决方案是转到packages目录并查找Ninject- [version]目录并删除,重命名或移动到其他位置。当你回到视觉工作室时,你应该看到什么项目现在抱怨不拥有它。
答案 1 :(得分:0)
从库包管理器中的管理NuGet包更新您的asp.net MVC程序集。
我刚才有同样的问题,这解决了它。这可能是因为MVC版本和Ninject程序集版本之间存在冲突。
答案 2 :(得分:0)
我也遇到了这个问题,事实证明,当我在Visual Studio中执行“清理”或“重建”时,实际上并没有清除bin目录的全部内容,而留下了一些程序集。由于构建没有替换这些旧的程序集,因此它在运行时引发版本不匹配的错误。对我来说,解决方案是导航到该文件夹,然后手动清除bin文件夹中的所有文件。手动删除并重建解决方案后,我的运行时错误消失了。