ログとログの対象を制御するために、いくつかの条件付きでLoggerクラスを拡張しようとしています。条件付きメソッドを呼び出す条件付きメソッドがC#で動作しない
#define Logging
#define VerboseLogging
static void Main(string[] args)
{
Logger.Log("Logging", "");
Logger.VerboseLog("VerboseLogging", "");
}
は「VerboseLoggingを」行方不明出力のみ「ログ」を、生成次のプログラムを実行している、しかし
public static class Logger
{
[Conditional("Logging"), Conditional("VerboseLogging")]
public static void Log(string msg, string filename)
{
// log to file
}
[Conditional("VerboseLogging")]
public static void VerboseLog(string msg, string filename)
{
Log(msg, filename); // just defer call to Log(string msg)
}
}
:私は、ログ機能の2種類を持っています。
アプリケーションをデバッグすると、実際にVerboseLoggingが呼び出されたことがわかりましたが、Log(msg, filename)
は呼び出されませんでした。デバッガは、関数呼び出しの末尾にある関数VerboseLog()
のすぐ上にジャンプします。
Log(string msg)
メソッドから条件を削除すると機能します。
なぜこのようなことが起こるのか、何をするべきかという手掛かりは誰にもありますか?
私はあなたがそれを持っているのと全く同じようにアプリケーションを構築しました。発生している問題を再現することができません。 –
バイナリが正しく再構築されていない可能性がありますか?クリーンなビルドをやってみましたか? –
はい、すでに数回試しています。もちろん、私のアプリケーションには、CSVを読み込み、ファイルにログを記録するなど、VerbosLog(...)が呼び出される理由はわかりませんが、VerboseLog()の本体にあるLog()の呼び出しにジャンプします。 –