Asp.Net MVC4项目编译失败:需引用指定版本System.Web.Mvc程序集
解决Asp.Net MVC4项目编译时缺失System.Web.Mvc 3.0引用的问题
这问题我之前帮同事排查过好几次,本质就是你的MVC4项目里藏着对MVC3程序集的依赖,而编译失败的机器没装MVC3,或者项目的引用配置没对齐。给你几个一步步能解决的办法:
检查并更新项目引用与配置
- 右键项目→「引用」,找到
System.Web.Mvc,如果显示的版本是3.0.0.0,直接删掉它,然后右键→「添加引用」→「程序集」→「框架」,找到System.Web.Mvc 4.0.0.0添加进去。 - 打开项目根目录的
web.config,找到<assemblies>节点,把里面的MVC引用替换成:<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> - 别忘了Views文件夹下的
web.config,找到<system.web.webPages.razor>里的<host>节点,更新版本:
同时检查<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /><pages>节点下的namespaces,确保所有System.Web.Mvc相关的引用都是4.0版本。
- 右键项目→「引用」,找到
排查第三方依赖
如果项目用了第三方NuGet包或者自定义类库,有些旧库可能是基于MVC3开发的,会强制依赖3.0版本。你可以打开NuGet包管理器,查看已安装的包:- 能更新的话,直接把这些包更到支持MVC4的版本;
- 如果必须用旧版本,要么在编译失败的机器上安装MVC3运行时,要么把MVC3的
System.Web.Mvc.dll复制到项目的bin文件夹,右键该dll→「属性」,设置「复制本地」为true。
修复Visual Studio引用路径
有时候VS会找不到正确的程序集路径,右键项目→「属性」→「引用路径」,添加MVC4程序集的默认路径:C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies清理重建项目
最后一步别忘:右键项目→「清理」,手动删除项目下的bin和obj文件夹,然后重新生成项目,避免缓存的旧dll干扰编译。
内容的提问来源于stack exchange,提问作者CodeMosher
相关产品推荐
相关产品推荐

