为什么我的项目仍在寻找Inject版本3.0.0.0

时间:2014-11-11 02:05:53

标签: c# ninject

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" />

我还应该做些什么?

3 个答案:

答案 0 :(得分:0)

如果您想轻松找出哪个项目使用的是什么版本,解决方案是转到packages目录并查找Ninject- [version]目录并删除,重命名或移动到其他位置。当你回到视觉工作室时,你应该看到什么项目现在抱怨拥有它。

答案 1 :(得分:0)

从库包管理器中的管理NuGet包更新您的asp.net MVC程序集。

我刚才有同样的问题,这解决了它。这可能是因为MVC版本和Ninject程序集版本之间存在冲突。

答案 2 :(得分:0)

我也遇到了这个问题,事实证明,当我在Visual Studio中执行“清理”或“重建”时,实际上并没有清除bin目录的全部内容,而留下了一些程序集。由于构建没有替换这些旧的程序集,因此它在运行时引发版本不匹配的错误。对我来说,解决方案是导航到该文件夹​​,然后手动清除bin文件夹中的所有文件。手动删除并重建解决方案后,我的运行时错误消失了。