我是唯一一个在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,并从程序文件文件夹中删除旧版本。
有人知道如何在不抓取每个项目的情况下修复此问题吗?
答案 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包:
引用:
可以通过以下方法之一解决问题 解决方案:
(首选)从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
- 醇>
手动更新对System.Web.MVC.dll的引用(不要使用GAC中的引用)。
尝试添加参考 - &gt;装配 - &gt;扩展程序对话框。
答案 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 强>