对于debug=true
vsdebug=false
讨论,在生产系统中,在发布到生产环境时关闭调试有很多好处。其他答案和评论对此进行了更详细的说明(我在 MVC4 应用程序中注意到的一大优势是 JS 和 CSS 捆绑包在调试关闭时被缩小)。
关于以Release
模式发布是否足够的问题,请阅读以下内容:
如果您使用的是新 ASP.NET 项目附带的现成转换文件,则不需要,您不需要手动设置它。但是,如果您没有转换文件或者您没有使用它们,那么在发布到生产环境时,您应该更改该设置。
基本上,当您发布 ASP.NET 网站时,它会做的是构建应用程序,应用适当的 web.config 转换(基于使用“发布 Web”功能时在“设置”部分中选择的配置 -我假设是您选择“发布”模式的位置),然后将代码发布到指定位置。
通常,为了让您开始转换,当您在 Visual Studio 中创建 ASP.NET 应用程序时,将为您的 web.config 提供两个转换:web.Debug.config
和web.Release.config
(您可以通过单击 web.config 旁边的展开符号来查看它们文件)。
如果您没有任何转换,您可以通过右键单击 web.config 文件并选择“添加转换配置”来创建它们,并且将为您在解决方案中拥有的各种构建配置创建转换文件。
正如 Maxim Kornilov 在他的回复中提到的,开箱即用的 web.Release.config 包含这个重要的转换行:<compilation xdt:Transform="RemoveAttributes(debug)" />
,它告诉应用程序debug
从标签中删除属性<compilation
,这将使应用程序在关闭调试的情况下发布。
注意:如果您在发布时选择的配置转换中没有看到RemoveAttributes(debug)
,那么代码可能会在调试模式下发布。
如果您真的想确定转换是如何工作的,请在发布后查看 web.config 的内容,您将看到转换的输出
此外, http ://webconfigtransformationtester.apphb.com/上还有一个工具可以让您测试 web.config 转换将如何影响您的 web.config 文件。
最后,我非常喜欢使用构建服务器并在代码准备好上线时构建发布我的代码(更少的人需要以这种方式直接访问服务器),所以 web.config 转换对我有很大帮助,从允许我根据我正在部署的环境更改连接字符串,以及管理不同环境的警告消息等(例如,警告:测试系统,不要输入真实数据)。通过使用转换,设置的主要集合可以保留在 web.config 文件中(与本地开发设置一起,因为按 F5 通常不会应用转换,除非您将其发布到本地进行测试),并且每个环境都有自己的自己的配置转换,它存在于源代码控制中,并且具有相同的分支,