Windows update caused MVC3 and MVC4 stop working

am i the only one who installed a Windows Update (8.1) on october 15, and suddenly MVC stop working because of this warning?

Warning 1 Could not resolve this reference. Could not locate the assembly "System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.

It seems that this windows update installs a newer version of MVC with version number 4.0.0.1, and removes old version from program files folder.

Someone know how to fix this without crawling for each project?

50442 次浏览

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

新的推荐信应该是这样的:

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

更新后出现同样问题:

Security Update for 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)

For web project, you may have to update the configuration in the web.config as well:

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

最好的解决方案是将 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>

You just have to edit version System.Web.Mvc manually in:

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

请看这个博客,推荐的方法是更新相应的 NuGet 软件包:

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

To quote:

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

  1. (Preferred) Install Microsoft.AspNet.Mvc from the NuGet gallery (this will install a binding redirect in your web.config). You can do 这是从 NuGet 包管理器或 Visual 中的 NuGet 控制台得到的 工作室:

    安装-包 Microsoft.AspNet.Mvc-版本-项目 PROJECTNAME

    MVC 4版本: 4.0.40804.0

    MVC 3版本: 3.0.50813.1

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

    尝试“添加引用-> 程序集-> 扩展”对话框。

看看这个: 微软 ASP.Net MVC 安全更新 MS14-059破坏了我的构建! MS 博客关于它,因为它显然带来了很多困惑

好吧,

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

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

然后我必须去系统的属性。韦伯。Mvc (可能是因为我删除并重新添加了它)并将 copy local 更改为 true。

希望这对谁有帮助。

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

Also in the properties change copy local to true.

在 web.config 中添加汇编绑定,以指向 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>

如果在尝试@Krzysztof 解决方案或上面的任何其他答案之后仍然得到相同的错误,一个可能对您有用的解决方案是 uninstall MVC 运行时间4.0