在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
命名空间有关。 它仍然与References
下的项目有关。 在Windows Update期间,我的MVC项目可能出了什么问题,应该如何解决?
以下是表示今天pipe理的更新的日志:
最近的更新增加了版本号
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文本 ),并使用以下设置运行该程序:
我的所有项目都是按照常规方式构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的更改。 我想有人可能有类似的情况。