Windows Update后,System.Web.Mvc无法正常运行

时间:2014-10-16 04:57:57

标签: c# asp.net-mvc namespaces windows-update

在昨天的Windows Update之后,我似乎在构建项目时遇到了问题。

Related Windows Updates could be:
ASP.NET MVC 2.0: KB2993939
ASP.NET MVC 3.0: KB2993937
ASP.NET MVC 4.0: KB2993928
ASP.NET MVC 5.0: KB2992080
ASP.NET MVC 5.1: KB2994397

System.Web.Mvc-related errors

这些错误似乎都与我检查过的System.Web.Mvc命名空间有关;它仍然与References下的项目相关联。在Windows Update期间,我的MVC项目可能出现什么问题,我该如何解决?

以下是指示今天管理的更新的日志:

16/10/2014's Windows Update

10 个答案:

答案 0 :(得分:34)

最近的更新增加了版本号

3.0.0.0 - > 3.0.0.1和4.0.0.0 - > 4.0.0.1

我必须删除引用并重新添加(在Assemblies> Extensions中找到System.Web.Mvc是Add Reference对话框)

答案 1 :(得分:10)

我在Windows更新后遇到同样的问题。 有我的解决方案。

Install-Package Microsoft.AspNet.Mvc -Version 5.2.0.0 -Project PROJECTNAME

此外,您可以尝试使用这些代码,也许有帮助。

Uninstall-Package Microsoft.AspNet.Mvc -Force

古德勒克。

答案 2 :(得分:5)

有两种方法可以解决这个问题:

选项1:使用NuGet添加Microsoft.AspNet.Mvc

使用NuGet将您所依赖的MVC版本的最新版本添加到项目中。 Microsft推荐这种方法。

选项2:更新汇编参考

如果向项目添加新的assymbly引用,您将看到System.Web.Mvc程序集现已版本化为x.0.0.1。


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

我建议不要直接尝试重新安装MVC。虽然它最终对我有用,但是当NuGet与MVC安装程序捆绑在一起时,你会遇到麻烦。

您需要在重新安装MVC之前卸载NuGet,因为NuGet仍然存在会导致MVC安装程序拒绝安装或失败。

此外,我不知道为什么重新安装MVC会阻止Windows Update在重新安装MVC后再次应用更新。

答案 3 :(得分:1)

随着补丁增加,版本号已经从(对于MVC4从4.0.0.0上升到4.0.0.1)上升,项目文件中的参考路径需要更改:

<Reference Include="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <Private>True</Private>
  <HintPath>..\bin\System.Web.Mvc.dll</HintPath>
</Reference>

<Reference Include="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\bin\System.Web.Mvc.dll</HintPath>
</Reference>

显然适当调整提示路径,并对其他版本的MVC进行类似的更改

答案 4 :(得分:0)

我们遇到同样的问题。
Microsoft将版本从3.0.0.0更改为3.0.0.1 我想这就是Visual Studio无法找到引用的原因,因为常规设置是&#34;使用特定版本 - true&#34;。
在我的情况下,我无法将设置更改为false,因为我在同一台机器上使用Mvc4,它会自动使用版本4 dll。

解决方案是删除System.Web.Mvc.dll的项目引用并再次添加。然后VS将使用Version-3.0.0.1-DLL作为参考。

答案 5 :(得分:0)

重新安装MVC程序集

下载链接:http://www.microsoft.com/en-US/download/details.aspx?id=30683

答案 6 :(得分:0)

我尝试了mh28的解决方案,其中提出了以下建议:

  

最近的更新增加了版本号

     

3.0.0.0 - &gt; 3.0.0.1和4.0.0.0 - &gt; 4.0.0.1

     

我不得不删除引用并重新添加(在。中找到System.Web.Mvc)   程序集&gt;扩展名是“添加引用”对话框)

最重要的是,我还建议在整个兴趣范围内运行查找和替换;我试过了,但失败了。似乎查找和替换不适用于.csproj文件。

接下来我要做的是找到一个文本替换工具(请参阅Ecobyte Replace Text)并使用以下设置运行程序:

Ecobyte Replace Text settings

我的所有项目都按照正常情况构建,我没有看到任何副作用(尽管web.config文件没有做任何更改)。我不确定(我不认为)这是最好的解决方案,我不认为这是受安全相关的Windows Update for .NET影响的所有System.Web.Mvc问题的灵丹妙药,但我认为这对于需要重新引用的大量项目的具体案例非常有用。

答案 7 :(得分:0)

尝试使用here提供的 MSI包的最新版本安装/修复ASP.NET MVC。

如果您在bindingRedirect中使用web.config,则可能需要(我的项目中不需要)更新部分。见the answer。这仍然没有帮助我建议您检查项目中的其他 web.config文件,例如~/Views/web.config

答案 8 :(得分:0)

我最近遇到了同样的问题。

在Windows Update之后 - 我在Visual Studio中的项目突然出现了500多个错误 - 所有错误都与system.web.mvc相关

所以我删除了引用并重新添加它 - 在C:\ Program Files(x86)\ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies中找到

很棒 - 项目编译。

将它放在网站上 - 获取“无法加载一个或多个请求的类型。检索LoaderExceptions属性以获取更多信息”

经过多次搞乱后,我去了网站,在那里下载了它的版本 - 引用它 - 它在我的笔记本电脑和现场工作

唷!!!!!!!

答案 9 :(得分:0)

这个问题对我而言。但是,修复比使用nuget修复或更新web.config简化得多。 通过手动更新{ProjectName} .csproj中的文本

解决了我的问题

参考Include =“System.Web.Mvc,Version = 3.0.0.1 ,Culture = neutral,PublicKeyToken = 31bf3856ad364e35,processorArchitecture = MSIL”

参考Include =“System.Web.Mvc,Version = 3.0.0.0 ,Culture = neutral,PublicKeyToken = 31bf3856ad364e35,processorArchitecture = MSIL” 检查更改,并在构建代理程序中运行构建,对我来说,这是TeamCity。

尽管这会在本地导致构建错误,但它解决了源代码控制/团队城市构建错误。

我意识到这不允许我在本地构建,而无需更改csproj文件。但是,在我按上面的方法检查更改后(将其从3.0.0.1更改为3.0.0.0),我可以在本地更新项目以使用新版本(3.0.0.1),而不是检查对csproj的更改。 我想有人可能有类似的情况。