2016-07-15 26 views
3

使用調試配置,我可以打開和關閉使用這種類型的語法的開關行爲:編程檢查構建配置

#if DEBUG 
    Console.WriteLine("Debug"); 
#else 
    Console.WriteLine("Not Debug"); 
#endif 

但是,如果我設置了不同的配置,說:TEST那麼這並未」 t工作:

#if TEST 
    Console.WriteLine("Test"); 
#else 
    Console.WriteLine("Not Test"); 
#endif 

有沒有辦法檢查這些?

+0

閱讀本文http://stackoverflow.com/questions/3167617/determine-if-code-is-running-as-part-o f-a-unit-test – NinjaDeveloper

+0

將「測試」添加到項目屬性 - >生成 - >條件編譯符號,它的工作原理 – 2016-07-15 12:43:05

+1

對於記錄 - 您實際上不檢查程序中的配置。 #if是一個預編譯指令,這意味着它正在編譯過程中執行。所以#if ..#else結構不是你的程序的一部分。 – enkryptor

回答

5

DEBUG常量是一個特殊的常量,每個配置中的每個項目都有一個設置,是否應該定義。缺省情況下,它在Debug中打開,在Release中關閉,但它是完全可配置的 - 打開項目的屬性頁並查看「Build」下的內容,並在其中顯示「Define DEBUG constant」複選框。

因此,定義一個新的構建配置,不會自動給你任何其他的編譯常量。但這並不意味着你不能手動創建它們。

要創建一個編譯常量,請將其添加到「條件編譯符號」列表中 - 但請確保在正確的生成配置中這樣做。

3

是的,你可以使用不同的配置。 如果您在配置管理器中選擇調試配置,DEBUG符號會自動生成。你可以檢查它。轉到您的項目 - >屬性 - >生成 - >定義DEBUG常量

如果您需要使用附加常量,只需在條件編譯符號中輸入自己的值即可。

步驟,說明您的情況:

  1. 轉到您的項目 - >屬性 - >生成
  2. 切換配置來測試
  3. 進入測試到條件編譯符號場

運行您代碼和享受:)