2009-10-23 44 views
2

對不起,這個極端新手的問題,但我沒有找到答案在別處,並沒有實際上做過這樣的事情,我自己(去圖 - 我想這發生在你的公司使用生產環境進行測試時)。您可以標記只包含在Debug版本中的代碼段嗎?

如果Visual Studio提供了一些機制來指定某些代碼段(例如日誌記錄)應該只包含在Debug版本中,那將會很不錯。這是否存在?我對C#和VB.NET以及VS 2005中的方法感興趣,以防萬一。

回答

7

有幾種方法。

爲了紀念你的代碼只能被包含在調試版本的特定部分,你可以在C#中做到這一點:

#if DEBUG 
    code that will only compile for Debug 
#endif 

如果你想避免這種情況,你可以標記與屬性的方法:

[Conditional("DEBUG")] 
public void Log(String message) { ... } 

在這種情況下,如果您未針對Debug進行編譯,則對此方法的調用將自動從編譯後的代碼中除去。這有一些限制。例如,如果您使用refout參數或返回值,則不能使用此參數。

您可以在這裏閱讀關於#if指令的更多信息:C# Preprocessor Directives,以及此處的屬性:ConditionalAttribute

+0

我認爲它是#ifdef DEBUG 編譯器在調試模式下添加了DEBUG符號。 – Dani 2009-10-23 13:27:01

+0

第一個例子也適用於VB.NET,第二個例子變成''。 – stevehipwell 2009-10-23 13:27:08

+0

@Dani - 調試符號默認定義。 – stevehipwell 2009-10-23 13:27:58

1

我們在AssemblyInfo.cs中這樣做:

 
#if DEBUG 
    [assembly: AssemblyConfiguration("Debug")] 
#else 
    [assembly: AssemblyConfiguration("Release")] 
#endif 

因此,對於C#的作品。

相關問題