HOW TO:使用追蹤和偵錯進行條件式編譯
更新:2007 年 11 月
當您於開發期間偵錯應用程式時,追蹤及偵錯輸出都會傳送至 Visual Studio 中的 [輸出] 視窗。然而,若要在部署應用程式中納入追蹤功能,您必須在啟用 TRACE 編譯器指示詞的情況下來編譯您的檢測應用程式。這種方式可將追蹤程式碼編譯成應用程式的發行版本。如果您沒有開啟 TRACE 指示詞,則在編譯期間會忽略所有的追蹤程式碼,並且不會將追蹤程式碼納入您將部署的可執行程式碼中。
追蹤和偵錯方法均具有關聯的條件屬性 (Attribute)。例如,如果追蹤的條件屬性 (Attribute) 為 true,則會將所有的追蹤陳述式納入組件 (Assembly) (已編譯的 .exe 檔案或 .dll) 中,如果 Trace 條件屬性為 false,則不會納入追蹤陳述式。
針對組建,您可以開啟 Trace 或 Debug 條件屬性 (Attribute),或兩者都開啟或都關閉。因此,組建可分為四種類型:Debug、Trace、兩者都開啟或兩者都關閉。部分產品部署的發行組建可能為兩者都關閉的類型;大部分的偵錯組建則為兩者都開啟的類型。
您可用數種方法來指定應用程式的編譯器設定值:
屬性頁
命令列
#CONST (針對 Visual Basic) 和 #define (針對 C#)
若要從屬性頁對話方塊變更編譯設定值
在 [方案總管] 中的專案節點上按一下滑鼠右鍵。
從快速鍵功能表選擇 [屬性]。
在 Visual Basic 中,按一下屬性頁面左窗格內的 [編譯] 索引標籤,然後按一下 [進階編譯選項] 按鈕,即可顯示 [進階編譯器設定] 對話方塊。選取您想要啟用之編譯器設定的核取方塊,清除您想要停用的設定值的核取方塊。
在 C# 中,按一下屬性頁面左窗格內的 [建置] 索引標籤,然後選取您想要啟用之編譯器設定的核取方塊,清除您想要停用的設定值的核取方塊。
若要使用命令列來編譯追蹤記錄程式碼
在命令列上設定條件編譯器參數。編譯器會將追蹤或偵錯程式碼納入執行檔中。
例如,在命令列上輸入下列編譯器指令會將追蹤程式碼納入已編譯執行檔中:
針對 Visual Basic:vbc /r:System.dll /d:TRACE=TRUE /d:DEBUG=FALSE MyApplication.vb
針對 C#:csc /r:System.dll /d:TRACE /d:DEBUG=FALSE MyApplication.cs
秘訣 若要編譯一個以上的應用程式檔,請在檔案名稱之間保留一個空白空格,例如,MyApplication1.vb MyApplication2.vb MyApplication3.vb 或 MyApplication1.cs MyApplication2.cs MyApplication3.cs。
前面範例中使用的條件編譯指示詞的意義如下:
指示詞
意義
vbc
Visual Basic 編譯器
csc
C# 編譯器
/r:
參考外部組件 (EXE 或 DLL)
/d:
定義條件編譯符號
注意事項: 您必須使用大寫字母來拼寫 TRACE 或 DEBUG。如需條件式編譯命令的詳細資訊,請在命令提示字元中輸入 vbc /? (Visual Basic) 或 csc /? (C#)。如需詳細資訊,請參閱從命令列建置 (C#) 或叫用命令列編譯器 (Visual Basic)。
若要使用 #CONST 或 #define 來執行條件編譯
請在原始程式碼檔案上方輸入適用於程式語言的陳述式。
語言
陳述式
結果
Visual Basic
#CONST TRACE = true
啟用追蹤
#CONST TRACE = false
停用追蹤
#CONST DEBUG = true
啟用偵錯
#CONST DEBUG = false
停用偵錯
C#
#define TRACE
啟用追蹤
#undef TRACE
停用追蹤
#define DEBUG
啟用偵錯
#undef DEBUG
停用偵錯
若要停用追蹤或偵錯
刪除原始程式碼中的編譯器指示詞。
-或-
以註解方式排除編譯器指示詞。
注意事項: 當您準備編譯時,您可從 [建置] 功能表選取 [建置],或使用命令列方法 (但不輸入 d:) 來定義條件編譯符號。