對不起,這個極端新手的問題,但我沒有找到答案在別處,並沒有實際上做過這樣的事情,我自己(去圖 - 我想這發生在你的公司使用生產環境進行測試時)。您可以標記只包含在Debug版本中的代碼段嗎?
如果Visual Studio提供了一些機制來指定某些代碼段(例如日誌記錄)應該只包含在Debug版本中,那將會很不錯。這是否存在?我對C#和VB.NET以及VS 2005中的方法感興趣,以防萬一。
對不起,這個極端新手的問題,但我沒有找到答案在別處,並沒有實際上做過這樣的事情,我自己(去圖 - 我想這發生在你的公司使用生產環境進行測試時)。您可以標記只包含在Debug版本中的代碼段嗎?
如果Visual Studio提供了一些機制來指定某些代碼段(例如日誌記錄)應該只包含在Debug版本中,那將會很不錯。這是否存在?我對C#和VB.NET以及VS 2005中的方法感興趣,以防萬一。
有幾種方法。
爲了紀念你的代碼只能被包含在調試版本的特定部分,你可以在C#中做到這一點:
#if DEBUG
code that will only compile for Debug
#endif
如果你想避免這種情況,你可以標記與屬性的方法:
[Conditional("DEBUG")]
public void Log(String message) { ... }
在這種情況下,如果您未針對Debug進行編譯,則對此方法的調用將自動從編譯後的代碼中除去。這有一些限制。例如,如果您使用ref
或out
參數或返回值,則不能使用此參數。
您可以在這裏閱讀關於#if指令的更多信息:C# Preprocessor Directives,以及此處的屬性:ConditionalAttribute。
我們在AssemblyInfo.cs中這樣做:
#if DEBUG [assembly: AssemblyConfiguration("Debug")] #else [assembly: AssemblyConfiguration("Release")] #endif
因此,對於C#的作品。
我認爲它是#ifdef DEBUG 編譯器在調試模式下添加了DEBUG符號。 – Dani 2009-10-23 13:27:01
第一個例子也適用於VB.NET,第二個例子變成''。 –
stevehipwell
2009-10-23 13:27:08
@Dani - 調試符號默認定義。 – stevehipwell 2009-10-23 13:27:58