2013-03-05 29 views
5

私はすべてのプロジェクトに対して実行する必要があるビルド後イベントコマンド(bar)を含む共有プロパティシートを持つVisual Studioのソリューションを用意しています。Visual Studioでビルド後イベントを継承しますか?

Foo.props>共通プロパティ>はビルドイベント>ビルド後のイベント> コマンドライン=バー

どのようにして、その後、追加のプロジェクト固有のビルド後のイベントを指定するのですか?通常の "親またはプロジェクトのデフォルトからの継承"が欠落しているので、保守が難しくなるため、すべてのプロジェクトに手動でbarを追加する必要はありません。

答えて

2

これに基づいて、postは可能ではないようです。しばらく前に質問を投稿しました。実行可能な選択肢を見つけることができましたか?

フィードバック後に編集

: 潜在的に厄介な代替マクロとしてあなたのコマンドを定義するには、次のようになります。

<!-- CommandX.props --> 
<PropertyGroup> 
    <CommandX>bar</CommandX> 
</PropertyGroup> 

次に、あなたは、プロジェクトのビルド後のコマンドまたは別に$(CommandX)を追加することができますプロパティシート。 $(CommandX)が存在しない場合、それは静かに無視されます。ビルドについてもう少し学んだ後

<!-- Some-Other-Property-Sheet.props --> 
<ImportGroup Label="PropertySheets"> 
    <Import Project="CommandX.props" /> 
</ImportGroup> 

:あなたは別のプロパティシートに、このマクロを追加する場合は値を継承$(CommandX)よう

、あなたはImportにごCommandXプロパティシートを持っていると思いますプロセス、私はMSBuild tasksを使用することをお勧めしたいと思います。特に、Exec taskが最も実現可能なソリューションを提供する可能性があります。

+0

いいえ、私は手動ですべてのプロジェクトを個別に、私の質問に従って維持することに頼っています。私が考えている(実装しようとはしていない)唯一の解決策は、スクリプトを通して自分の継承構造を設計することです。すべてのプロジェクトがビルド後のイベントと同じスクリプトを呼び出し、プロジェクト名を変数として渡し、必要に応じて追加のコマンドを実行します。 Clunkyですが、少なくとも1つのファイルだけをメンテナンスします。 – JBentley

+0

または、各プロジェクトに独自のスクリプト(MSVCの組み込みマクロを使用してプロジェクト依存の場所からスクリプトを呼び出す)を呼び出し、スクリプトが継承するプロジェクトからスクリプトを再帰的に呼び出させるようにします。これらのアプローチの主な問題は、継承構造そのものを2つの場所(プロパティシートとスクリプト)で更新する必要があります。それ以外の場合は、同期が外れます。 – JBentley

13

この解決策を見つけて、もう1つの投稿を見てください。なぜVC++チームがこの機能を残しているのか理解できないことが分かりました。

プロパティページのマクロを調べた後、%(コマンド)マクロ/環境変数を使用して、以前のプロパティのコマンドを含めることができます。これはすべてのビルドイベントで機能します。

PropertySheet1.props

copy some.dll $(OutputPath) 
%(Command) 

PropertySheet2.props

すべてのコマンドで
copy other.dll $(OutputPath) 
%(Command) 

結果が実行されています。

+0

これは完全に機能します。ありがとう! – Bklyn

0

いくつかのポストビルドイベントは定義されたプロパティシートから継承されなかったので、私はアヒルに疑問を呈し、ここに着いた。

は、私は良いニュースを持っている: のVisual Studio 2013ので、前とビルド後のイベントコマンドラインは、プロパティシートからすべてのイベントを追加オプション、「親またはプロジェクトのデフォルトから継承」を持っています。

(Visual Studio 2013と2017 Professionalでテスト済み)

関連する問題