2017-06-28 58 views
1

我在一個.net庫中使用了smartinspect來跟蹤方法等。但是對於發佈配置,我希望避免部署smartinspect以及跟蹤代碼中的所有內容。每次我調用方法時,是否有一種簡單的方法可以在不使用編譯器指令的情況下實現此目的?在發佈版本中省略代碼

示例代碼:

public bool OpenDocument(string srcFile) 
    { 
     SiExportWordSession.EnterMethod(this, "OpenDocument"); 
     try 
     { 
      SiExportWordSession.LogString("srcFile", srcFile); 

      try 
      { 
       _doc = new Document(srcFile); 
       return true; 
      } 
      catch (Exception e) 
      { 
       SiExportWordSession.LogException(e); 
       ErrorName = e.GetType().Name; 
       ErrorMessage = e.Message; 
       return false; 
      } 
     } 
     finally 
     { 
      SiExportWordSession.LeaveMethod(this, "OpenDocument"); 
     } 
    } 

我的第一個想法是創建一個包裝爲smartinspect這兩種調用smartinspect或什麼都不做,這取決於發佈配置。但是這不會讓我擺脫最後的嘗試。有更好的方法來解決這個問題嗎?

+2

看起來您正在尋找[Conditional Compilation](https://msdn.microsoft.com/zh-cn/library/aa691099.aspx)。我簡短:你可以使用'''#if DEBUG'''。看[這篇文章的例子](http://rickvandenbosch.net/blog/is-my-c-application-running-in-debug-mode-or-about-pre-processor-directives/) –

+0

這將需要每個電話都被一個'#if'包圍。 @RickvandenBosch –

回答

5

有一種方法,但它仍然需要您映射您正在使用的方法。

什麼,關鍵是這是在加入一個Conditional屬性的方法,將表明什麼打造它將運行:

[Conditional("TRACE")] 

的所有代碼調用該方法將只被編譯成代碼時構建定義了TRACE常數。