目的は、本番ビルドのデータベースから実行時にデバッグ呼び出しをオンに切り替えることができるようにすることです...
4 に答える
いいえ; 条件付きメソッドとプリプロセッサディレクティブのポイントは、コンパイラが最終的な実行可能ファイルからコードを省略できるようにすることです。これらに相当するランタイムはif
ステートメントです。
ただし、アスペクト指向のプログラミングは、他の方法では存在しない実行中のプログラムにコードを挿入できるという点で、あなたが求めているものとほぼ同じです。
編集:ジョーが述べたように、これを行う方法は、ログに記録されるものをきめ細かく制御できるlog4netのようなロギングフレームワークに対してプログラムすることです。
プリプロセッサレベルではありません。結局のところ、あなたはそのプロセスの結果を実行しています。もちろん、プリプロセッサチェックを通常のコードチェックに変更することもできます。これは明らかに必要に応じて切り替えることができます。
いいえ。ただし、ほとんどのロギングサブシステムはこの機能を提供します。たとえば、log4netを使用すると、ログレベルを動的に変更できます。また、System.Diagnostics.Traceを使用している場合は、TraceSwitchレベルを動的に変更できます。
明らかに、バイナリコード自体に影響を与えることはできません(#ifステートメントの場合のように)。
私が通常行うことは、コードに多くのログが含まれていることを確認することです。これは、トレーススイッチによってアクティブ化されます。そうすれば、ロギングをほとんどまたはまったく行わずにシステムを本番環境で実行できます。問題を調査したい場合は、構成ファイルを変更してロギングをオンに切り替えることができます。