发布在发布模式下构建的DLL,但调试版为true

时间:2014-03-14 10:13:10

标签: c# vb.net visual-studio-2010 compilation publishing

如果您在发布模式下构建和发布ASP.NET Web 应用程序,那么开发环境中以下web.config行中的debug="true" < / em> 有什么不同吗?

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

显然,您将始终在生产服务器上拥有debug="false" - 这不是问题。

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

目前我还没有,因为PITA需要记住在发展true和发布false之间进行更改。我希望答案是&#34;它没有任何区别&#34;。

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

3 个答案:

答案 0 :(得分:1)

请阅读the following article有关运行debug="false"

的重要性的信息

摘录:

  

[保持debug =“true”]会导致许多非最佳事情发生,包括:

     

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

     

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

     

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

     

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


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

答案 1 :(得分:0)

我认为当程序员重建项目时,VS不会在web.config中获取编译标签的debug属性值。
当我使用Configuratoin = release重建项目时,我将debug属性的值保留为“debug”。然后我下载实用程序.NET Assembly Information以检查我的构建的输出。我发现那些dll都是“释放”!!

答案 2 :(得分:0)

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

处于释放模式的程序集允许编译器进行优化,以使代码更快,并且通常消耗更少的资源。

相反,<compilation debug="true" />会使应用程序变慢并消耗更多内存,通常来说,上述答案中报告了所有缺点。