VB 2010 Express:Debug.WriteLine在调试版中完全优化了吗?

时间:2011-08-31 06:36:50

标签: vb.net visual-studio-2010 debugging compiler-optimization

似乎没有涵盖的简单问题:如果我在代码中使用了很多Debug.WriteLine语句,我的生产版本中是否会完全没有这些语句?

我的意思是:编译器是否足够智能,不会为这些调用发出任何代码?或者,如果有指令,我是否必须通过#if DEBUG..#end包围它们?

3 个答案:

答案 0 :(得分:2)

调试类成员用ConditionalAttribute标记,因此如果在发布模式下完成构建,则不会编译调用站点

请参阅本页顶部 http://msdn.microsoft.com/en-us/library/9z9k5ydz.aspx

答案 1 :(得分:1)

如果在RELEASE模式下构建项目,则省略​​所有Debug.WriteLine语句,因为它们是以ConditionalAttribute设置为DEBUG进行修饰的。

这是在编译时完成的。使用反编译器(例如.NET Reflector,dotNetPeek)分析程序集时,可以检查此项。如果您在DEBUG模式下构建,则会调用Debug.WriteLine。如果在RELEASE模式下构建它,则不存在调用。

答案 2 :(得分:1)

Debug类输出仅在Debug配置中有效。 Trace类在Debug和Release中都有效。因此,您不需要使用#if DEBUG。