C# 发布在发布模式下生成的DLL,但调试=true

C# 发布在发布模式下生成的DLL,但调试=true,c#,vb.net,visual-studio-2010,compilation,publishing,C#,Vb.net,Visual Studio 2010,Compilation,Publishing,如果您在发布模式下构建并发布ASP.NET web应用程序,则开发环境中的以下web.config行中的debug=“true”是否有任何区别 <compilation defaultLanguage="vb" debug="true" /> 显然,您将始终在生产服务器上安装debug=“false”,这是毫无疑问的 我的问题是,当我构建用于发布到生产系统的DLL时,是否应该设置debug=“false” 目前我没有,因为这是一个必须记住在true用于开发和false用于发布之

如果您在发布模式下构建并发布ASP.NET web应用程序,则开发环境中的以下web.config行中的
debug=“true”
是否有任何区别

<compilation defaultLanguage="vb" debug="true" />

显然,您将始终在生产服务器上安装
debug=“false”
,这是毫无疑问的

我的问题是,当我构建用于发布到生产系统的DLL时,是否应该设置
debug=“false”

目前我没有,因为这是一个必须记住在
true
用于开发和
false
用于发布之间进行更改的问题。我希望答案是“没什么区别”

(我将Visual Studio 2010与.NET 4.0一起使用-由于遗留原因,该解决方案同时包含VB.NET和C#项目)。

请阅读运行
debug=“false”的重要性。

摘录:

[Keeping the debug=“true”]会导致许多非最佳情况发生,包括:

1) ASP.NET页面的编译需要更长的时间(因为某些批处理 优化(已禁用)

2) 代码的执行速度可能较慢(因为需要一些额外的调试路径) 启用)

3) 在运行时,应用程序中会使用更多的内存

4) 从WebResources.axd处理程序下载的脚本和图像是 未缓存



在freefaller的评论之后,我想补充一点,配置值在发布时并不重要,只是在运行时才重要。因此,您可以使用debug=“true”在发布模式下编译程序集,并使用debug=“false”部署它,而不会出现任何问题。该参数仅作用于运行时配置

我认为当程序员重建项目时,VS不会采用web.config中编译标记的debug属性值。

当我使用Configuratoin=release重新构建项目时,我将debug属性的值保留为“debug”。然后我下载实用程序来检查构建的输出。我发现那些DLL都是“发布”

程序集的编译模型与ASP.NET应用程序的调试模式之间存在很大差异

在发布模式下的程序集允许编译器进行优化,使代码更快,并且通常消耗更少的资源


相反,
会使应用程序速度变慢并消耗更多内存,一般来说,上面的答案中提到了所有缺点。

谢谢@Samy,我现在正在阅读。不幸的是,您的摘录是关于在生产环境中保留
debug=“true”
。在我的问题中,我已经说得很清楚了,我说的是在开发环境中使用
debug=“true”
。请仔细阅读这个问题,因为我特意明确指出了这一点事实上,整篇文章都在讨论生产环境中的标志——因此这完全不是我要问的for@freefaller我认为区别并不重要;我认为最好注意这些影响,因为您可以合法地在您的开发环境上运行debug=“false”(例如,如果您正在测量执行时间,或者希望了解应用程序吞吐量)。总而言之,它对开发环境有影响,但在这个平台上,您可能不关心它,这取决于您:)我明白您的意思,我编辑了答案。我的第一个回答太宽泛了:pOK,谢谢@samy。您是否有任何证据(MSDN,官方博客)来备份
该参数仅作用于运行时配置