2010-02-19 30 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默認

啓用