例外 - 无法加载文件或程序集'System.Web.Mvc,Version = 4.0.0.1 ...'

时间:2015-06-30 09:49:43

标签: asp.net-mvc

有一个问题 - 只有当我请求一个控制器时 - 我得到例外:

  
    

无法加载文件或程序集“System.Web.Mvc,Version = 4.0.0.1,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”或其中一个依赖项。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040

  

这很奇怪,因为在我的配置文件中,我看到版本是4.0.0.0并且所有其他控制器都很好,只有当我在服务器上传应用程序时才会发生这种情况。

5 个答案:

答案 0 :(得分:20)

这是一个已知问题。似乎您最近已从3.0迁移到4.0,或者此应用程序是来自存储库的新克隆。单个控制器可能没有nuget恢复。我也遇到过这个问题。我得到了这个msdn link并且浏览它有一个解决方案。以下是提到的步骤。

  

可以通过实施以下方法之一来解决问题   解决方案:

     
      
  1. (首选)从NuGet库安装Microsoft.AspNet.Mvc(这将在您的web.config中安装绑定重定向)。你可以做   这来自NuGet包管理器或Visual中的NuGet控制台   工作室:

         
        

    安装包Microsoft.AspNet.Mvc -Version -Project PROJECTNAME

      
         

    MVC 4版本:4.0.40804.0

         

    MVC 3版本:3.0.50813.1

  2.   
  3. 手动更新对System.Web.MVC.dll的引用(不要使用GAC中的引用)。

         

    尝试添加参考 - >装配 - >扩展对话框。

  4.         

    在任何一种情况下都要确保复制本地项目属性   程序集设置为true,因此它最终位于bin文件夹中   需要部署。有一个已知的NuGet错误可以重置Copy   本地标志:https://nuget.codeplex.com/workitem/4344

为所有引用System.Web.Mvc dll的项目安装Nuget包Microsoft.AspNet.Mvc 希望这可以解决您的问题

答案 1 :(得分:0)

由于ASP.Net程序集解决了怪异问题,我在VSO代理上遇到了这个构建错误。我更改了一些构建配置,Visual Studio将MVC项目的输出目录修改为\bin\x86\Debug或类似的东西。

之前我曾经咬过我,我记得ASP.Net只想建立\bin

因此,当您在构建时遇到任何类型的“无法找到引用”时,请记住检查构建输出目录是否仅为\bin

enter image description here

有关此问题的更多信息: Changing output directory for asp.net project in Visual Studio

希望这有助于某人。

答案 2 :(得分:0)

您可以引用ASP.NET MVC作为GAC的参考,但不同的开发人员可能会安装不同版本的MVC。

删除对ASP:NET MVC的引用,并将ASP.NET MVC添加为nuget包。

答案 3 :(得分:0)

转到Nuget管理器,搜索:“ Microsoft.AspNet.Mvc”,然后按更新按钮。

对我的案子有用。

答案 4 :(得分:0)

我在运行时也得到了它,这是由于我的项目(使用NuGet PackageReference的单元测试项目)引用了已经具有必要的绑定重定向的ASP.NET网站项目(编译器建议)构建时的警告)。我必须在单元测试项目中添加相同的绑定重定向。

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