安装Ninject.MVC5后出现FileLoadException

时间:2014-06-18 09:50:51

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

我正在尝试使用Adam Freeman的“Pro ASP.NET MVC 5”一书来学习ASP.NET MVC。不幸的是,所有使用Ninject的项目都会抛出相同的错误

  

Ninject.dll中出现“System.IO.FileLoadException”类型的异常,但未在用户代码中处理

     

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

这与本主题中讨论的问题完全相同,

Issues after installing ninject mvc 3 in mvc 5 project

但提供的解决方案对我不起作用。

我尝试过目标平台4.5和4.5.1,Ninject MVC3和MVC5。我还插入了这个片段

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

Web.config文件中,没有任何影响。

问题必须出在Ninject MVC3和MVC5包中。无论何时安装这些软件包,对Ninject.StandardKernel()的任何调用都会抛出异常,无论是从Global.asax还是从新NinjectWebCommon.cs还是从任何其他代码中获取(当然,这不应该对于这种异常无关紧要,但是在这个帖子Error using Ninject with ASP.NET V4中,有人认为该错误可能与使用Global.asax将Ninject连接到应用程序有关。

我已经没有想法了。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:7)

添加到您的Web.config(即SportsStore.WebUI项目):

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

它应该与此一起工作 - &gt; <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">