ASP.NET MVC发布不覆盖Web.Config及CS0433编译错误求助
嘿,作为过来人太懂你这种新手发布ASP.NET MVC项目时踩的坑了!这俩问题其实都是部署时的常见情况,给你整理了具体的解决步骤,跟着来就行:
问题1:Visual Studio发布时不覆盖目标Web.Config
这个是VS发布的默认设置在搞鬼,调整下发布配置就能解决:
- 右键你的MVC项目,选择「发布」打开发布界面
- 切换到「设置」标签,找到「文件发布选项」区域
- 直接选择「替换目标中的Web.config」——如果你想完全覆盖服务器上的配置文件;要是你只想修改连接字符串这类特定节点,后期可以学习Web.Config转换,但新手先选完全覆盖最省心
- 还可以顺便勾选「在目标位置删除额外文件」,确保服务器上不会残留旧文件造成干扰
- 保存配置后重新发布,Web.Config就会被正常覆盖啦
问题2:发布后出现CS0433编译错误
这个错误是MVC版本冲突导致的——你的项目引用的MVC DLL和服务器上(或临时缓存里)的版本撞了,按下面步骤逐一解决:
- 先清理服务器上的临时ASP.NET缓存文件:
打开服务器的管理员命令提示符,运行这段命令:rd /s /q "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files"
旧缓存清干净,就不会有旧版本DLL搞事情了 - 确保项目里的MVC引用能被同步到服务器:
在VS里右键项目→「引用」,找到System.Web.Mvc,右键选择「属性」,把「复制本地」改成「True」——这样发布时会把项目用的MVC DLL一起传到服务器,不会默认使用服务器GAC里的版本 - 给Web.Config加版本绑定,强制使用项目指定的版本:
打开项目的Web.Config,找到<runtime>节点,添加这段配置(注意把版本号改成你实际使用的,比如5.2.7.0):<dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0" /> </dependentAssembly> - 最后检查服务器IIS的应用程序池:
确保应用程序池是.NET Framework 4.0(和你项目的框架版本一致),然后重启应用程序池,再重新发布项目
这样应该就能搞定这两个问题啦!
内容的提问来源于stack exchange,提问作者Milacay
相关产品推荐
相关产品推荐

