发布模式与调试="假"

Ste*_*een 11 asp.net debugging release build

我试图找到一个明确的解释,说明在.Net 3.5 Web应用程序中,在发布模式下编译的效果与debug ="false"有关.到目前为止看起来设置debug ="false"具有相同的效果,并且在发布模式下的编译已经折旧,但我找不到任何确凿的证据.

这个问题看起来很有希望,但似乎是在回答调试和发布版本之间的区别,而不是发布模式和debug ="true": 编译debug ="false"和Release模式之间有什么区别?

但它确实链接到这篇文章:http: //odetocode.com/blogs/scott/archive/2005/11/15/debug-and-release-builds-in-asp-net-2-0.aspx

"这个新的编译模型使得网站的配置管理器过时了.在Visual Studio 2005网站"项目"中出现的唯一选项是调试配置.不要担心 - 它没有任何意义.web.config文件现在规则学校."

现在这是我最接近的答案,它似乎暗示释放模式已经折旧而支持debug ="false"但我在MSDN或任何其他来源上找不到任何此类确认.

任何帮助将不胜感激.

更新

抱歉; 澄清这是我所指的"Web应用程序项目".

稍微改一下我的问题,如果我在web.config中有以下设置:

<compilation defaultLanguage="c#" debug="false">

释放和调试模式编译有什么影响(如果有的话)?

Kas*_*man 6

TL; DR =更重要的是编译debug ="true | false".但是,在Debug中编译对性能的影响也很小.

Debug和Release之间的区别(除了定义DEBUG常量之外)是"Optimize code"标志,它在Debug中被禁用并在Release中被启用.(如果查看项目设置,"构建"选项卡.)

"Optimize code"标志告诉语言编译器在生成DLL时进行一些优化(比如删除未使用的变量,并省略一些调试符号).与未设置标志的情况相比,这是一个相对较小的性能改进(可能是C++与C#/ VB中的较大影响)和DLL内存使用量的略微减少.

编译debug ="true"标志告诉JIT编译器应该连接此代码以进行调试.这会降低多个维度(加载时间,运行时,内存和资源加载)的性能,但可以调试正在运行的代码.

如果您想在生产中获得更详细的堆栈跟踪,那么您可以使用编译debug ="false"运行Debug构建,但性能差异很小.但我会测试两者的表现,以确保你不会失去太多.

Credit属于这个链接到这个博客条目的答案,我后来发现了这个,其中包含所有这些信息.


AMi*_*ico 5

你必须小心你的选择.有"Web应用程序"和"Web站点"项目.

"网站"项目没有"发布"配置.网站仅使用web.config的编译部分中的调试设置.如果您打开"网站",请注意"配置管理器"中唯一列出的配置是"调试".您可以从项目的"MSBuild选项"属性页或"发布网站"对话框中控制编译.

配置"发布"和"调试"按预期用于"Web应用程序"项目.