22

複数のプロジェクトで構成される既存の大規模なアプリケーションのデモバージョンを作成する必要があります。既存のプロジェクトを使用し、プリプロセッサディレクティブを介して機能を無効にしたい

#if DEMO
    mycode.NeuterNow();
#endif

私たちはMSBuildを使用してアプリを構築しており、理想的には次のようなものを使用します。

MSBuild -DefineProperty:DEMO MySolution.sln

そのような機能は存在しますか?

4

3 に答える 3

17

試す

msbuild /p:DefineConstants=DEBUG;DEMO MySolution.sln

DEBUG または RELEASE、およびソリューション ファイルで既に定義されているその他の定数を含める必要がありますが、これでうまくいくと思います。免責事項:私は実際に自分で試したことはありません。

于 2009-01-27T22:18:03.070 に答える
10

これはこれの複製です。はい、 /p:DefineConstants は正常に機能し、コンフィギュレーターは正しいです。これにより、プロジェクト ファイルで既に定義されているすべての条件付きシンボルが上書きされます (これは良い IMHO です)。したがって、それらを定義する必要があります。全て。

于 2009-01-27T22:21:03.113 に答える
5

この問題に対する自分自身の解決策を追求するときに、私は何か面白いものを発見し、共有したいと思いました。

MSBuildの/pディレクティブは、ビルドファイルに既に存在するプロパティに限定されません。何でも設定できます。

したがって、たとえば、プリプロセッサディレクティブを$(FeatureSet)でリードしてから、たとえばとしてMSBuildを呼び出す場合

MSBuild solution.sln /p:FeatureSet=DEMO

それに応じて#definedを取得します。手動でクローバーを実行したり、実行している他のプリプロセッサディレクティブを再指定したりする必要はありません。

これがVS2010で機能することを確認しました。MSBuildを使用せずにVisualStudio内で実行されるビルドのFeatureSetをどのように定義するかについてはよくわかりません。

于 2012-12-28T08:03:16.580 に答える