2010-02-19 56 views

回答

15

两者均使用[Conditional]属性进行条件编译。

如果在构建中定义了TRACE标志,则调用Trace类将导致写入跟踪输出。默认情况下,TRACE在调试和发布模式下均已定义。如果标志没有定义,则不会发生任何事情。

如果定义了DEBUG标志,则调用Debug类将导致输出写入调试流。默认情况下,DEBUG仅在调试模式下定义。

另一个主要的区别是跟踪很容易定制trace listeners并稍后决定您想要如何处理跟踪输出。它比调试输出更灵活,通常更适合登录生产应用程序。

+0

因此,如果跟踪标志是默认定义,是有办法在发布或调试模式下取消设置? – Carlo 2010-02-19 02:17:17

+1

@Carlo:当然,它在项目属性Build选项卡中。有两个复选框,一个表示“定义DEBUG常量”,另一个表示“定义TRACE常量”。这些对应于'Debug'和'Trace'类以及它们相应的'Write'方法的行为方式。 – Aaronaught 2010-02-19 02:36:32

+0

太棒了!谢谢,很好的回答! – Carlo 2010-02-19 02:39:04

2

区别在于发布模式。

DEBUG符号未定义时,即在发布模式下编译时,Debug.Write不会编译到代码中。

但是,Trace.Write将在Debug模式和Release模式下编译。

4

DEBUG: DEBUG settings

发布: RELEASE settings

正如你所看到的TRACE常数在两个CONFIGS默认

启用