Windows更新导致MVC3和MVC4停止工作

时间:2014-10-15 22:25:04

标签: .net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 windows-update

我是唯一一个在10月15日安装Windows Update(8.1)的人,突然MVC因为这个警告而停止工作了吗?

  

警告1无法解析此引用。无法找到程序集“System.Web.Mvc,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35,processorArchitecture = MSIL”。检查以确保磁盘上存在程序集。如果您的代码需要此引用,则可能会出现编译错误。

似乎此Windows更新安装了版本号为4.0.0.1的较新版本的MVC,并从程序文件文件夹中删除旧版本。

有人知道如何在不抓取每个项目的情况下修复此问题吗?

9 个答案:

答案 0 :(得分:105)

最佳解决方案是将DLL更新到版本4.0.0.1。 尝试使用nuget:

Install-Package Microsoft.AspNet.Mvc -Version 4.0.40804 -Project <your project name>

这将自动更新

  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1" />
  </dependentAssembly>

您只需在以下位置手动编辑System.Web.Mvc版本:

<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

答案 1 :(得分:25)

我们必须手动触摸每个 .csproj 以将版本从 4.0.0.0 更新为 4.0.0.1 以使我们的构建继续进行。相当痛苦。

新引用应如下所示:

<Reference Include="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />

答案 2 :(得分:23)

更新后出现同样的问题:

  

Microsoft ASP.NET MVC 4.0安全更新(KB2993928)
  http://support.microsoft.com/kb/2993928

但仅适用于引用System.Web.Mvc但未按包安装的项目。

我的同事,没有安装Microsoft ASP.NET MVC 4.0 Runtime并且没有收到更新,没有遇到麻烦,仍然没有引用4.0.0.0,而不是4.0.0.1
我手动将引用更改为4.0.0。 1 ,在办理登机手续后,我的同事仍然可以使用4.0.0的引用进行构建。 0
(在Win7 Pro SP1,VS2013 Pro Update 3上工作)

答案 3 :(得分:21)

请参阅此博客,推荐的方法是更新相应的NuGet包:

  

http://blogs.msdn.com/b/webdev/archive/2014/10/16/microsoft-asp-net-mvc-security-update-broke-my-build.aspx

引用:

  

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

     
      
  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中的引用)。

         

    尝试添加参考 - &gt;装配 - &gt;扩展程序对话框。

  4.   

答案 4 :(得分:8)

请参阅:Microsoft Asp.Net MVC Security Update MS14-059 broke my build! MS在博客上发表了关于它的信息,因为它显然带来了很多混乱

答案 5 :(得分:3)

对于Web项目,您可能还必须更新web.config中的配置:

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

答案 6 :(得分:1)

好,

对我来说,这是两个简单的步骤:

首先,我将对System.Web.Mvc的所有引用从4.0.0.0更改为4.0.0.1,

然后我必须转到System.Web.Mvc的属性(可能是因为我已经删除并重新添加它)并将copy local更改为true。

希望这对某人有用。

答案 7 :(得分:1)

您需要更改解决方案中对System.Web.Mvc的所有引用。 只需删除它们并添加新的4.0.0.1版本。

此外,在属性中将copy local更改为true。

在web.config中添加assambly绑定指向新版本的mvc:

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

答案 8 :(得分:0)

如果您在尝试@Krzysztof解决方案或上述任何其他答案后仍然遇到相同的错误,那么可能对您有用的解决方法是卸载 MVC Runtime 4.0