2011-02-05 8 views
6

私のアプリケーションでは、多くのConsole#WriteLineまたはConsole#Write callsがあります。これは非常に多く、アプリケーションは必要以上に遅いです。すべてのConsole#WriteLineコールを無効または削除しますか?

これで、Console#WriteLineとConsole#Writeのすべてのコールを削除するか、少なくとも無効にする簡単な方法を探しています。

これを達成する最も簡単な方法は何ですか?

+1

あなたは[ '#IF DEBUG'](http://msdn.microsoft.com/en-us/library/4y6tbswk.aspx)を使用する場合、または使用することができます将来的には[ConditionalAttribute](http://weblogs.asp.net/tgraham/archive/2004/03/12/88682.aspx)と独自のデバッグ印刷方法。 –

+0

私はすでにそれをやっていますが、プロジェクトの始めに私はそれをしませんでした。 –

+1

アプリのConsole.WriteLineの#IF DEBUGは私にとっては悪い考えですね。ランタイムでレベルを調整できるログエンジンを使用してください。 –

答えて

4

多分&コードエディタの機能を置き換えますか? その後、あなたが開始するためにSystem.Diagnostics.Debug.Print()を使用している必要がありますたとえば、すべての

Console.WriteLine 

を見つけ、彼らは非本質的な(ログ)している場合

//Console.WriteLine 
+0

私はそれについて考えましたが、問題は正規表現かそのようなものがあることです。 – RoflcoptrException

+0

そして、私はコードに空白がたくさんあります。なぜなら、コールをそのようなものに置き換える必要があるからです。 – RoflcoptrException

+1

多分私が書いたもので十分でしょうか? –

3

と交換してください。

幸運にもWriteLine()Debug.Print()と互換性がありますので、これは簡単です。S & Rです。

Console.Write()を交換するのはややこしいかもしれません。

完了する:Debug.Print()ステートメントは、プロジェクト|プロパティのチェックボックスを使ってオン/オフを切り替えることができます。

1

単純な非正規表現の検索/置換ダイアログを使用し、Console.WriteLine(をすべてDebug.WriteLine(に置き換えます。

以前はコンソールウィンドウに直接出力された内容を追跡し、リリースモードでのパフォーマンスを最適化することができます。

+0

Debug.WriteLineは同じパラメータを処理しません。 –

+0

@Henk Holterman:そうです。私は私の答えを保持しています(この正確なケースでは、パラメータが毎回単一の文字列のように非常に基本的であった場合には便利です)。 –

1

Visual Studioでは、Find "Console.Write"を実行するマクロを記録し、その行を削除するために、Tools|Macros|Record temporary macroオプションを使用します。

"Console.Write"を検索するには、 を見つけてから、Ctrl + Lを押して行を削除します。

マクロを保存し、問題のある行があるプロジェクト内のすべてのファイルに対して実行します。

約2分かかります。

しかし、まずソースをバックアップすることをお勧めします。念のため。

19

私が実装したさらに迅速な修正がここにあります。

... 
static int Main(String[] args) 
{ 
... 
#if !DEBUG 
    Console.SetOut(TextWriter.Null); 
    Console.SetError(TextWriter.Null); 
#endif 
... 
} 

HTH