私は、ILocateLogFile
開発/ベータ/運用サーバーの標準実装と、ローカル開発環境でのみ機能するインターフェイスを持っています。ローカルで実行しているかサーバーで実行しているかを決定するためのきれいな方法を思いつかないようです (できればコンパイル時ですが、実行時は問題ありません)。これは、IIS でホストされている WCF アプリケーションです。
私が思いついた最善の方法は、次のようなコンパイラ シンボルを使用することです。
ILocateLogFile locateLogFile;
#if DEBUG
locateLogFile = new DevSandboxLogFileLocator();
#else
locateLogFile = new LogFileLocator();
#endif
問題は、コンパイル シンボルがビルドによって設定されることです。これは私が制御していません。確実にしたいのです。Visual Studio の存在を自動的に確認する方法はありませんか? または、少なくとも IIS ではなく Cassini をチェックするには?