2009-05-06 9 views

答えて

15

あなたは本当にそうではありません。 プロジェクト設定の[ビルド]ページを見て、そこに設定することができるので、テストするために#if文を書くことができます。

デバッグビルドの場合、DEBUGシンボルが自動的に挿入されます(デフォルトではオフにすることができます)。

だからあなたはあなたが良い理由をした場合を除きしかし、これをしないこの

#if DEBUG 
     RunMyDEBUGRoutine(); 
#else 
     RunMyRELEASERoutine(); 
#endif 

ようなコードを書くことができます。デバッグビルドとリリースビルドの間で異なる動作をするアプリケーションは、誰にも悪いことではありません。

+1

Windowsサービス(/簡単にデバッグをインストールする必要はありません) – Scoregraphic

+0

@Scoregraphic開発するときには役立つことがあります。しかし全く異なる動作をする(コマンドラインアプリ対サービス)!!! –

+0

条件式が私のカスタム構成を見つけられないのはなぜですか?私はこのようなコードを持っています:#if WCFDebug/* my code */#endif - しかしそれは単にそれを見つけることはありません。設定内に設定を追加しました。 – FrenkyB

0

コンパイル時にアセンブリに組み込むことはできませんが、MSBuildを使用してアプリケーションの設定ファイルに追加する方法があります。

のMSBuildを使用してマルチ環境設定ファイルを実行する方法については、このブログ記事を参照してください - http://adeneys.wordpress.com/2009/04/17/multi-environment-config/

また、あなたが特定のコンパイル済みファイル(あなたのC#やVBファイル)を編集し、その実行を持っているでしょうのMSBuildタスクを書くことができBeforeBuildタスクのあなたがそれをファイルに挿入する場所を調べる必要があるので、それはやるべきであるはずの何らかの種類のトークン設定が用意されていれば、やや難しいでしょう。私はそれが可愛いとは思わない!

13

右クリックメニューのプロジェクトをアンロードして</Project>タグの直前に追加すると、設定が保存されているファイルが保存されます。その後、あなたのコードで使用するためにそれを読むことができます。

<Target Name="BeforeBuild"> 
    <WriteLinesToFile File="$(OutputPath)\env.config" 
         Lines="$(Configuration)" Overwrite="true"> 
    </WriteLinesToFile> 
</Target> 
+0

私はVaccanoの溶液を使用しました。デバッグやリリースだけでなく、各ビルド構成に基づいていくつかの構成を動的に変更する必要があります。このソリューションは素晴らしいものです。ありがとう。 – MsBugKiller

5

これを達成するためにシンボルを使用できます。カスタムシンボルは、各プロジェクトの[プロパティ]> [ビルド設定]ペインで定義し、#ifディレクティブを使用してコード内でテストできます。

シンボルUNOEUROの定義方法とコード内での使用方法の例。

UNOEURO symbol defined here

bool isUnoeuro = false; 
#if UNOEURO 
    isUnoeuro = true; 
#endif 
関連する問題