在Windows Update之后,System.Web.Mvc无法正常工作

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

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相关的错误

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

以下是表示今天pipe理的更新的日志:

2014年4月16日的Windows更新

最近的更新增加了版本号

3.0.0.0 – > 3.0.0.1和4.0.0.0 – > 4.0.0.1

我不得不删除引用并重新添加(System.Web.Mvc可以在Assemblies> Extensions中findAdd Reference对话框)

今天Windows更新后,我有同样的问题。 有我的解决scheme。

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

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

 Uninstall-Package Microsoft.AspNet.Mvc -Force 

祝你好运。

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

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

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

选项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

我会build议不要直接尝试重新安装MVC。 尽pipe它最终对我有效,但是随着与MVC安装程序绑定的NuGet,您将遇到麻烦。

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

另外,我不明白为什么重新安装MVC会阻止Windows Update在重新安装MVC之后再次应用更新。

随着补丁的增加,版本号从(对于MVC4已经从4.0.0.0升级到4.0.0.1)升级,项目文件中的引用path需要从以下版本更改:

 <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> 

显然,适当调整提示path,并为其他版本的MVC做类似的更改

我们有同样的问题。
Microsoft将版本从3.0.0.0更改为3.0.0.1
我想这是Visual Studio找不到引用的原因,因为常规设置是“使用特定版本 – 真”。
在我的情况下,我不能改变设置为false,因为我在同一台机器上使用Mvc4,它会自动使用版本4 dll。

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

重新安装MVC程序集

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

我试过mh28的解决scheme,提出如下:

最近的更新增加了版本号

3.0.0.0 – > 3.0.0.1和4.0.0.0 – > 4.0.0.1

我不得不删除引用并重新添加(System.Web.Mvc可以在Assemblies> Extensions中findAdd Reference对话框)

最重要的是,还有人build议我在我感兴趣的范围内运行查找和replace ; 我试过了,但失败了。 看起来像查找和replace不适用于.csproj文件。

接下来我做的是find一个文本replace工具(请参阅Ecobytereplace文本 ),并使用以下设置运行该程序:

Ecobyte替换文本设置

我的所有项目都是按照常规方式构build的,而且我没有看到任何副作用(尽pipe没有对web.config文件进行任何更改)。 我不知道(我不认为)这是最好的解决scheme,我不认为这是所有受安全相关的Windows Update for .NET影响的System.Web.Mvc问题的银弹,但是我认为这对于具体的情况是很有用的,因为有很多项目需要重新参考。

尝试使用此处提供的最新版本的MSI软件包来安装/修复ASP.NET MVC。

如果您在web.config使用bindingRedirect ,则可能需要(在我的项目中不需要)更新这些部分。 看到答案 。 这一切仍然没有帮助,我会build议检查您的项目中的其他 web.config文件,例如~/Views/web.config

我最近有同样的问题。

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

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

伟大的项目编译。

把它放在网站上 – 获取“无法加载一个或多个请求的types。检索LoaderExceptions属性的更多信息”

经过大量的搞乱,我去了网站,下载了它的版本 – 引用它 – 它在我的笔记本电脑和现场工作

唷!!!!!!!

这个问题是给我的。 但是,修复比使用nuget修复或更新web.config更简单。 我的问题是通过手动更新{ProjectName} .csproj中的文本解决的

Reference 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”,检查更改并在构build代理机器中运行构build,对于我来说,是TeamCity。

即使这导致本地生成错误,它解决了源代码pipe理/ Team City生成错误。

我意识到,这不允许我build立本地,而不必更改csproj文件。 但是,我像上面所做的那样检查更改之后(将其从3.0.0.1更改为3.0.0.0),我可以在本地更新项目以使用新版本(3.0.0.1),而不检查对csproj的更改。 我想有人可能有类似的情况。