カスタマイズ可能な Team Foundation のビルド ターゲット

MSBuild のターゲットとは、MSBuild プロジェクトのビルド方法を定義するものです。 Microsoft.TeamFoundation.Build.targets ファイルには、ターゲットの階層構造と一連の定義済みの MSBuild のタスクおよびターゲットが Team Foundation ビルド用に定義されており、すべての Team Foundation ビルドの種類で使用されます。 ビルド定義には、TfsBuild.proj という名前のプロジェクト ファイルが含まれています。 このプロジェクト ファイルは、1 つまたは複数のビルド定義と関連付けることができます。 TfsBuild.proj では、Microsoft.TeamFoundation.Build.targets ファイルがインポートされ、さまざまなプロパティや項目グループの値が用意されています。 TfsBuild.proj ファイルをカスタマイズして、階層構造内のいくつかの拡張ポイント ターゲットをオーバーライドできます。 targets ファイルは、ビルド エージェントの <root>:\Program Files\MSBuild\Microsoft\VisualStudio\TeamBuild にあります。

重要

Microsoft.TeamFoundation.Build.targets ファイルは変更しないでください。

MSBuildのターゲットの詳細については、「MSBuild ターゲット」を参照してください。

タスクでカスタマイズできるターゲット

タスクはターゲット内に含まれます。 タスクでは、ビルド プロセスの間に実行するコードを指定します。 次の表は、機能拡張用に定義されているすべての Team Foundation ビルド ターゲットの一覧です。 ビルド処理のどの時点でカスタム タスクを実行する必要があるかに応じて、これらのターゲットのいずれかにタスクを挿入します。

注意

他のターゲットはオーバーライドしないことをお勧めします。

ターゲット名

説明

BeforeEndToEndIteration

ビルド処理が開始されるときにカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

AfterEndToEndIteration

ビルド処理の最後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

BeforeInitializeWorkspace

ワークスペースを初期化する前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

AfterInitializeWorkspace

ワークスペースを初期化した後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

BuildNumberOverrideTarget

ビルド番号または格納場所に関連するプロパティをカスタマイズする場合は、このターゲットにタスクを挿入します。 作成するタスクでは、BuildNumber という出力プロパティを作成する必要があります。

BeforeClean

クリーンを行う前に呼び出されます。 クリーン前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

AfterClean

クリーンが完了した後に呼び出されます。 クリーン後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

BeforeGet

ソース管理からソースが取得される前に呼び出されます。 ソースの取得前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

AfterGet

ソースが取得された後に呼び出されます。 ソースの取得後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

BeforeLabel

ソースにラベルが設定される前に呼び出されます。 Label ターゲットの前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

AfterLabel

ラベル設定が完了した後に呼び出されます。 Label ターゲットの後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

BeforeCompile

コンパイルの開始前に呼び出されます。 コード ファイルがコンパイルされる前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

BeforeCompileConfiguration

各構成をコンパイルする前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

BeforeCompileSolution

各ソリューションをコンパイルする前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

AfterCompileSolution

各ソリューションをコンパイルした後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

AfterCompileConfiguration

各構成をコンパイルした後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

AfterCompile

コンパイルが完了した後に呼び出されます。 コード ファイルがコンパイルされた後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

BeforeGetChangesetsAndUpdateWorkItems

変更セットの関連付けと成功したビルドの作業項目の更新を行う前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

AfterGetChangesetsAndUpdateWorkItems

変更セットの関連付けと成功したビルドの作業項目の更新を行った後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

BeforeTest

テストの実行前に呼び出されます。 Test ターゲットの前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

BeforeTestConfiguration

各構成をテストする前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

AfterTestConfiguration

各構成をテストした後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

AfterTest

テストが完了した後に呼び出されます。 Test ターゲットの後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

BeforeDropBuild

ビルドのバイナリ、ビルドのログ ファイル、およびテスト結果をリリース サーバーのビルド ドロップ ディレクトリに保存する前に呼び出されます。 ビルドされたファイルがドロップ ディレクトリに保存される前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

AfterDropBuild

ビルドのバイナリおよびテスト結果をリリース サーバーにドロップした後に呼び出されます。 ビルドされたファイルがドロップ ディレクトリに保存された後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

BeforeCreateWorkItem

作業項目を作成する前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

AfterCreateWorkItem

作業項目を作成した後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

BeforeOnBuildBreak

ビルド ブレークの結果として作業項目を作成する前に呼び出されます。 BuildBreak ターゲットの前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

AfterOnBuildBreak

ビルド ブレークの結果として作業項目が作成された後に呼び出されます。 BuildBreak ターゲットの後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。

GenerateDocumentation

これは空のターゲットです。 ビルド処理中にドキュメントを生成する場合は、このターゲットにタスクを挿入します。

カスタム タスク実行のためのターゲットのオーバーライド

作成するタスク コードはターゲットと組み合わせる必要があります。 詳細については、「タスクの作成」を参照してください。 カスタム タスクを作成するには、次の手順を実行する必要があります。

  1. タスク コードを作成し、TfsBuild.proj ファイルでソース管理パスを指定するか、ビルド コンピューター自体でビルドのバイナリを使用できるようにすることで、ビルドのバイナリがビルド コンピューターで確実に使用できるようにします。

    注意

    実際のコードでは、タスク コードをソース管理にチェックインすると便利ですが、必ずしもこれを行う必要はありません。

  2. MSBuild の UsingTask 要素を使用してカスタム タスクを宣言することにより、カスタム タスクを TfsBuild.proj ファイルで登録します。

    詳細については、「UsingTask 要素 (MSBuild)」を参照してください。

    <UsingTask 
        TaskName="MyTasks.SimpleTask" 
        AssemblyName="MyAssembly.Build.Tasks"/>
    
  3. TfsBuild.proj ファイルの目的のターゲットにタスクを挿入することで、タスクを実行します。

    <Target Name="BeforeGet">
        <SimpleTask />
    </Target>
    

    注意

    このタグを追加すると、XML スキーマ警告が表示されます。 この警告は無視してかまいません。

  4. カスタム タスクが含まれている DLL をビルド コンピューターに配置します。

    重要

    カスタマイズした TfsBuild.proj ファイルに関連付けられているすべてのビルド定義は、変更の影響を受けます。

ターゲットの実行順序

ターゲットの実行順序は、CleanCompilationOutputOnly プロパティの値に依存します。 CleanCompilationOutputOnly が true の場合、clean ターゲット (BeforeCleanCoreClean、および AfterClean) は、get ターゲットと label ターゲット (BeforeGetCoreGetAfterGetBeforeLabelCoreLabel、および AfterLabel) の実行後に実行されます。 CleanCompilationOutputOnly プロパティが false の場合、clean ターゲットは、get ターゲットと label ターゲットの実行前に実行されます。 CleanCompilationOutputOnly が true の場合は、CoreClean ターゲットの実行時に、ソース ディレクトリから中間アセンブリのみが削除されます。 このプロパティを false に設定すると、CoreClean ターゲットの実行時に、ソース ディレクトリ全体が削除されます。

CleanCompilationOutputOnly が true の場合と false の場合のターゲットの実行順序を、次の表に示します。 オーバーライドできるターゲットは、太字で表示されています。

CleanCompilationOutputOnly = true

CleanCompilationOutputOnly = false

  1. InitializeBuildProperties

  2. BeforeEndToEndIteration

  3. BuildNumberOverrideTarget

  4. InitializeEndToEndIteration

  5. BeforeInitializeWorkspace

  6. CoreInitializeWorkspace

  7. AfterinitializeWorkspace

  8. InitializeBuild

  9. BeforeGet

  10. CoreGet

  11. AfterGet

  12. BeforeLabel

  13. CoreLabel

  14. AfterLabel

  15. BeforeClean

  16. CoreCleanCompilationOutput

  17. AfterClean

  18. BeforeCompile

  19. CoreCompile (構成とプラットフォームの各組み合わせに対して実行されます。)

  20. BeforeCompileConfiguration

  21. CoreCompileConfiguration (ビルドする各ソリューションに対して実行されます。)

  22. BeforeCompileSolution

  23. CoreCompileSolution

  24. AfterCompileSolution

  25. AfterCompileConfiguration

  26. AfterCompile

  27. BeforeGetChangesetsAndUpdateWorkItems

  28. CoreGetChangeSetsAndUpdateWorkItems

  29. AfterGetChangesetsAndUpdateWorkItems

  30. BeforeTest

  31. CoreTest (構成とプラットフォームの各組み合わせに対して実行されます。)

  32. BeforeTestConfiguration

  33. CoreTestConfiguration

  34. AfterTestConfiguration

  35. AfterTest

  36. GenerateDocumentation

  37. BeforeDropBuild

  38. CoreDropBuild

  39. AfterDropBuild

  40. AfterEndToEndIteration

  1. InitializeBuildProperties

  2. BeforeEndToEndIteration

  3. BuildNumberOverrideTarget

  4. InitializeEndToEndIteration

  5. BeforeInitializeWorkspace

  6. CoreInitializeWorkspace

  7. AfterinitializeWorkspace

  8. BeforeClean

  9. CoreClean

  10. AfterClean

  11. InitializeBuild

  12. BeforeGet

  13. CoreGet

  14. AfterGet

  15. BeforeLabel

  16. CoreLabel

  17. AfterLabel

  18. BeforeCompile

  19. CoreCompile (構成とプラットフォームの各組み合わせに対して実行されます。)

  20. BeforeCompileConfiguration

  21. CoreCompileConfiguration (ビルドする各ソリューションに対して実行されます。)

  22. BeforeCompileSolution

  23. CoreCompileSolution

  24. AfterCompileSolution

  25. AfterCompileConfiguration

  26. AfterCompile

  27. BeforeGetChangesetsAndUpdateWorkItems

  28. CoreGetChangeSetsAndUpdateWorkItems

  29. AfterGetChangesetsAndUpdateWorkItems

  30. BeforeTest

  31. CoreTest (構成とプラットフォームの各組み合わせに対して実行されます。)

  32. BeforeTestConfiguration

  33. CoreTestConfiguration

  34. AfterTestConfiguration

  35. AfterTest

  36. GenerateDocumentation

  37. BeforeDropBuild

  38. CoreDropBuild

  39. AfterDropBuild

  40. AfterEndToEndIteration

CoreCompile ターゲットの実行中にエラーが発生した場合、ターゲットは次の順序で実行されます。 オーバーライドできるターゲットは、太字で表示されています。

  1. SetBuildBreakProperties

  2. BeforeOnBuildBreak

  3. GetChangesetsOnBuildBreak

  4. BeforeDropBuild

  5. CoreDropBuild

  6. AfterDropBuild

  7. BeforeCreateWorkItem

  8. CoreCreateWorkItem

  9. AfterCreateWorkItem

  10. CoreOnBuildBreak

  11. AfterOnBuildBreak

参照

その他の技術情報

Team Foundation ビルドの構成ファイルについて

カスタマイズ可能な Team Foundation のビルド プロパティ