7

barすべてのプロジェクトで実行する必要があるビルド後のイベント コマンド ( ) を含む共有プロパティ シートがある Visual Studio のソリューションがあります。

Foo.props > Common Properties > Build Events > Post-Build Event > Command Line = bar

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

4

3 に答える 3

19

この解決策を見つけて、他の投稿を見た後。VC++ チームがこの機能を除外する理由が理解できないことがわかりました。

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

PropertySheet1.props

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

PropertySheet2.props

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

すべてのコマンドが実行されます。

于 2014-03-30T20:22:07.847 に答える
2

この投稿に基づくと、それは不可能のようです。少し前に質問を投稿しました。実行可能な代替案を見つけることができましたか?


フィードバック後に編集:潜在的に厄介な代替手段は、コマンドをマクロとして定義することです:

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

$(CommandX)次に、プロジェクトのビルド後のコマンドまたは別のプロパティ シートに追加できます。$(CommandX)存在しない場合は、静かに無視されます。

このマクロを別のプロパティ シートに追加する場合はImportCommandXプロパティ シート$(CommandX)に値を継承する必要があります。

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

ビルド プロセスについてもう少し学習した後、MSBuild タスクの使用をお勧めします。特に、Exec タスクが最も実現可能なソリューションを提供する可能性があります。

于 2013-12-09T12:19:55.993 に答える