3

昨日、動作について尋ねたところAfterBuild、セクションの一番下に配置することで動作させることができましたProject: MSBuild AfterBuild ステップ

別のプロジェクトでまったく同じことを試しました。これは私のBeforeBuildコードです:

<Target Name="BeforeBuild">
    <Message Text="###HI###" Importance="High" />
</Target>

Target Name="BeforeBuild"このプロジェクトには以前に別のものはありませんでした。これをProjectセクションの一番下に配置しました。.vcxproj は問題なく Visual Studio 2010 に解析/読み込みされています。「MSBuild プロジェクトのビルド出力/ログの詳細度」を「通常」に設定しています。

これが実行されない原因となる、私が考えていなかったことが他にありますか?

4

1 に答える 1

6

ターゲットは、明示的に呼び出されるか、デフォルトのターゲットであるか、呼び出されるターゲットの DependsOn で宣言されるか、独自の BeforeTargets または AfterTargets を宣言し、それらのターゲットの 1 つが呼び出される場合を除き、呼び出されません。

したがって、「InitializeBuildStatus」というターゲットの前にターゲットを呼び出す場合は、次のように記述できます。

<Target Name="MyBeforeBuild" BeforeTargets="InitializeBuildStatus">
    <Message Text="###HI###" Importance="High" />
</Target>

「InitializeBuildStatus」ターゲットが実行されると実行されます。(Visual Studio または MSBuild 実行で詳細ログを有効にして、適切な BeforeTarget ターゲットを決定するのに役立てることができます)。

「BeforeBuild」および「AfterBuild」ターゲットは、一部の Microsoft のプロジェクト タイプのターゲット システムによって明示的に呼び出されます。これは限られた拡張性しか提供しません。新しい (.NET 4.0) の方法は、BeforeTargets と AfterTargets です。

ターゲットのビルド順序を参照してください。

于 2014-11-07T06:00:59.073 に答える