複数のプロジェクトで構成される既存の大規模なアプリケーションのデモバージョンを作成する必要があります。既存のプロジェクトを使用し、プリプロセッサディレクティブを介して機能を無効にしたい
#if DEMO
mycode.NeuterNow();
#endif
私たちはMSBuildを使用してアプリを構築しており、理想的には次のようなものを使用します。
MSBuild -DefineProperty:DEMO MySolution.sln
そのような機能は存在しますか?
複数のプロジェクトで構成される既存の大規模なアプリケーションのデモバージョンを作成する必要があります。既存のプロジェクトを使用し、プリプロセッサディレクティブを介して機能を無効にしたい
#if DEMO
mycode.NeuterNow();
#endif
私たちはMSBuildを使用してアプリを構築しており、理想的には次のようなものを使用します。
MSBuild -DefineProperty:DEMO MySolution.sln
そのような機能は存在しますか?
試す
msbuild /p:DefineConstants=DEBUG;DEMO MySolution.sln
DEBUG または RELEASE、およびソリューション ファイルで既に定義されているその他の定数を含める必要がありますが、これでうまくいくと思います。免責事項:私は実際に自分で試したことはありません。
これはこれの複製です。はい、 /p:DefineConstants は正常に機能し、コンフィギュレーターは正しいです。これにより、プロジェクト ファイルで既に定義されているすべての条件付きシンボルが上書きされます (これは良い IMHO です)。したがって、それらを定義する必要があります。全て。
この問題に対する自分自身の解決策を追求するときに、私は何か面白いものを発見し、共有したいと思いました。
MSBuildの/pディレクティブは、ビルドファイルに既に存在するプロパティに限定されません。何でも設定できます。
したがって、たとえば、プリプロセッサディレクティブを$(FeatureSet)でリードしてから、たとえばとしてMSBuildを呼び出す場合
MSBuild solution.sln /p:FeatureSet=DEMO
それに応じて#definedを取得します。手動でクローバーを実行したり、実行している他のプリプロセッサディレクティブを再指定したりする必要はありません。
これがVS2010で機能することを確認しました。MSBuildを使用せずにVisualStudio内で実行されるビルドのFeatureSetをどのように定義するかについてはよくわかりません。