Visual Studio 2010では、プロジェクトのプロパティに移動して[ビルド]タブに移動すると、[TRACE定数の定義]のチェックボックスがあります。これは、#define TRACEを実行するのと同じです。
System.Diagnostics.Traceのすべてのメソッドには、[Conditional("TRACE")]
があります。
私の質問はなぜこれをオフにすることですか?つまり、定義されているトレースリスナーがない場合は、ログなどをいっぱいにするつもりではありません。それは私には奇妙に感じます。 Traceを呼び出す努力をしているなら、なぜApp/Web.configを介して制御するのではなく、コンパイラスイッチを介して制御したいのですか?再コンパイル。
何か不足していますか?確かに、それはパフォーマンスにとってそれほど悪いことではありませんよね?
おそらく、このチェックボックスは/define:TRACE
コンパイラオプションと同等です。エンドユーザーになんらかの理由(セキュリティなど)でトレース出力を表示させないため、またはパフォーマンスを向上させるために、リリースビルドでこのオプションをオフにすることができます。もちろん、パフォーマンスの向上は、オンになっているときに実行されている作業量に依存しますが、 条件属性 は、コンパイラーから関数呼び出し(文字列のフォーマットなどを含む)を完全に削除します生成されたILなので、できますが大きな違いを生みます。