2017-06-28 7 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

[条件コンパイル](https://msdn.microsoft.com/en-us/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定数を定義します。

関連する問題