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包:
去引用:
该问题可以通过实施以下解决scheme之一来解决:
(首选)从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
手动更新对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