我一直在做周圍使用System.Diagnostics.Debug的一些性能測試,似乎涉及到靜態類發行的結構是建立在調試被完全刪除所有代碼。我想知道編譯器如何知道這一點。也許有一些類或配置屬性可以準確指定該行爲。刪除代碼構建在.NET
我想創建,我想完全釋放配置中刪除一些調試代碼,我在想,如果我能做到這一點,就像Debug類,其中簡單地改變配置參數刪除代碼。
我一直在做周圍使用System.Diagnostics.Debug的一些性能測試,似乎涉及到靜態類發行的結構是建立在調試被完全刪除所有代碼。我想知道編譯器如何知道這一點。也許有一些類或配置屬性可以準確指定該行爲。刪除代碼構建在.NET
我想創建,我想完全釋放配置中刪除一些調試代碼,我在想,如果我能做到這一點,就像Debug類,其中簡單地改變配置參數刪除代碼。
您可以將ConditionalAttribute屬性與字符串「DEBUG」一起應用於任何方法,並且對該項目的調用將僅存在於DEBUG構建中。
這不同於使用的#ifdef方法,因爲這可以讓你通過其他人在他們的調試配置發佈使用方法(如在.NET Framework中的Debug類的方法)。
看一看preprocessor directives ...
#if DEBUG
//code
#endif
Visual Studio中定義了一個DEBUG常數調試配置,你可以使用這個包,你不想在你的發佈版本中執行的代碼:
#ifdef DEBUG
// Your code
#endif
但是,您也可以裝飾的方法與條件屬性,這意味着該方法將永遠不會被稱爲非調試版本(方法以及任何調用點將會從裝置中取出):
[Conditional("DEBUG")]
private void MyDebugMethod()
{
// Your code
}
不知道,這可能會派上用場! – Stormenet 2008-12-03 15:10:49
這正是我所希望的,因爲它是可定製和可擴展的。 – Curro 2008-12-03 15:40:44