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

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

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

看来,这个Windows更新安装版本号为4.0.0.1的MVC的较新版本,并从程序文件文件夹中删除旧版本。

有人知道如何解决这个问题,而不是每个项目爬行?

最好的解决scheme是更新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" /> 

我们必须手动触摸每个.csproj ,将版本从4.0.0.0更新到4.0.0.1,以使我们的构build进行。 非常痛苦。

新的参考应该如下所示:

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

更新后有同样的问题:

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

但只适用于引用System.Web.Mvc的项目,不能通过包安装。

我的同事,没有安装微软ASP.NET MVC 4.0运行时,并没有收到更新,没有任何问题,仍然对4.0.0.0的参考,而不是4.0.0.1

我手动将引用更改为4.0.0。 1 ,办理登机手续后,我的同事仍然可以参照4.0.0来build立。 0
(在Win7 Pro SP1和VS2013 Pro Update 3上都可以)

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

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

去引用:

该问题可以通过实施以下解决scheme之一来解决:

  1. (首选)从NuGet库安装Microsoft.AspNet.Mvc(这将在你的web.config中安装绑定redirect)。 您可以从NuGet包pipe理器或Visual Studio中的NuGet控制台执行此操作:

    安装程序包Microsoft.AspNet.Mvc – 版本 – 项目PROJECTNAME

    MVC 4版本:4.0.40804.0

    MVC 3版本:3.0.50813.1

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

    尝试添加引用 – > Assemblies – > Extensions对话框。

看到这个: 微软Asp.Net MVC安全更新MS14-059打破了我的构build! MS博客,因为它显然带来了很多混乱

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

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

好的,

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

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

然后我不得不去System.Web.Mvc属性(可能是因为我已经删除并重新添加它),并将本地复制到true。

希望这有助于某人。

您需要在您的解决scheme中更改对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> 

如果您在尝试使用@Krzysztof解决scheme或上述任何其他解决scheme后仍然遇到同样的错误,那么解决这个问题的一个办法就是卸载 MVC Runtime 4.0