在mvc 5项目中安装ninject mvc 3后出现的问题

时间:2014-04-29 20:14:03

标签: asp.net-mvc ninject asp.net-mvc-5 ninject.web.mvc

我创建了新的asp mvc 5项目 项目目标.NET 4.5 我安装了ninject mvc 3 nuget包。 但是当我运行项目时,我在NinjectWebCommon.cs方法中的CreateKernel()中收到了此错误:

  

类型' System.IO.FileLoadException'的例外情况发生在   Ninject.dll但未在用户代码中处理

     

其他信息:无法加载文件或程序集   ' System.Web.Mvc,Version = 3.0.0.0,Culture = neutral,   公钥= 31bf3856ad364e35'或其中一个依赖项。该   定位程序集的清单定义与程序集不匹配   参考。 (HRESULT异常:0x80131040)

2 个答案:

答案 0 :(得分:3)

您收到此错误,因为Ninject.MVC声称引用旧版本的ASP.NET MVC程序集。由于它是强类型的,因此您必须通知应用程序使用较新的程序集。这就是为什么默认项目模板中的web.config文件包含这样的运行时部分的原因:

<runtime>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
  </dependentAssembly>
</runtime>

您可以将其添加到您的配置中,也可以使用较新的Ninject package

答案 1 :(得分:3)

请确保将其包含在应用程序Web配置文件中。

 <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

例如

 <runtime>
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
          <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
          <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
        </dependentAssembly>
     </assemblyBinding>
 </runtime>