ビルド システムによってバイナリが配置される場所の制御

既定のビルド処理 (DefaultTemplate.xaml で定義) は、すべてのコード プロジェクトからコンパイルされたバイナリを 1 つのディレクトリに格納します。 ただし、場合によってはバイナリをより細かく整理し、整理されたフォルダー構造に格納することがあります。

このトピックの方法を使用すると、自分で設計したディレクトリ構造にバイナリを格納するカスタム ビルド処理を作成できます。 同じ原則を利用して、さまざまな方法でビルド処理をカスタマイズすることもできます。 このトピックでは、以下の方法について説明します。

  • ビルド処理の Windows ワークフロー セグメントをカスタマイズします。 バイナリのコンパイルと処理を除くビルド処理のほとんどの部分は、このセグメントに変更を加えてカスタマイズします。 このトピックでは、具体的には次のタスクを実行する方法を説明します。

    • 既定のテンプレート (DefaultTemplate.xaml) のコピーを変更することで、カスタム ビルド処理を作成します。

    • データをワークフローに渡す引数を宣言して使用します。

    • ワークフロー全体でデータを収集して渡す変数を宣言して使用します。

    • ワークフローが MSBuild アクティビティを使用して MSBuild を呼び出す方法を変更します。

    • ファイルをビルド サーバーにダウンロードし、ConvertWorkspaceItem アクティビティを使用してそのファイルをビルド処理で使用できるようにします。

  • ビルド処理の MSBuild セグメントをカスタマイズします。 このセグメントに変更を加えることで、バイナリのコンパイルおよび処理方法をより効率的にカスタマイズできます。 このトピックでは、具体的には次のタスクを実行する方法を説明します。

    • MSBuild に引数を渡し、コード プロジェクトでそれらの引数を使用して、コンパイルされたバイナリの処理方法を変更します。

    • プロパティ グループやターゲットなど、独自の MSBuild 要素の一元化された共通コード ライブラリを設定します。 このようなライブラリを設定することで、重要なビルド処理ロジックをチームで簡単に再利用および変更できるようになります。

注意

このトピックでは、3 種類のコード プロジェクト (C#、C++、および Visual Basic) について説明します。 ただし、他の種類のコード プロジェクトでもこれらのテクニックを使用できる場合があります。

このトピックの内容

  • 必要なアクセス許可

  • 既定のビルド処理におけるコンパイルされたバイナリの格納場所

  • 各コード プロジェクトに埋め込まれたロジックを使用して、コンパイルされたバイナリを整理する

    • 処理の概要

    • 手順の概要

    • ビルド定義と CustomOutputDirInline カスタム ビルド プロセス テンプレートを作成する

    • 格納フォルダー ロジックをコード プロジェクトに埋め込む

  • 集中管理される 2 つのファイルに保持したロジックを使用して、コンパイルされたバイナリを整理する

    • 処理の概要

    • 手順の概要

    • 格納フォルダー ロジックを含む MSBuild 共通コード ファイルを作成する

    • ビルド定義と CustomOutputDirImport カスタム ビルド プロセス テンプレートを作成する

    • OurTeamBuild ビルド定義を更新する

    • 格納フォルダー ロジックをコード プロジェクトにインポートする

  • 次の手順

必要なアクセス許可

次の手順を実行するには、次のアクセス許可を [許可] に設定する必要があります。

  • [ビルド定義の編集]

  • 関連するバージョン コントロール ディレクトリの [チェックアウト] および [チェックイン]

  • [ビルドをキューに挿入]

詳細については、「Team Foundation Server のアクセス許可」を参照してください。

既定のビルド処理におけるコンパイルされたバイナリの格納場所

作業がどのようにコード プロジェクトとソリューションに分割されているかにかかわらず、既定のビルド処理では、コンパイルされたすべてのバイナリが格納フォルダー内の 1 つのサブディレクトリに格納されます。 たとえば、次のソリューションとコード プロジェクトがあるとします。

  • ソリューション A

    • CPPWin32ConsoleApp (Visual C++ コンソール アプリケーション)

    • CSharpConsoleApp (Visual C# コンソール アプリケーション)

  • ソリューション B

    • VBConsoleApp (Visual Basic コンソール アプリケーション)

次の図は、DefaultTemplate.xaml で指定された処理の一部としてバイナリがコンパイルされた後、それらのバイナリを MSBuild が格納する方法と場所を示しています。

既定のフロー

各コード プロジェクトに埋め込まれたロジックを使用して、コンパイルされたバイナリを整理する

コンパイルされたバイナリを、ソリューションおよびコード プロジェクトの構造と一致するサブディレクトリ構造に格納するように指定できます。

処理の概要

次の図は、ビルド処理などを実装する方法の概要を示しています。

カスタムの出力ロジックを埋め込んだフロー

手順の概要

要約すると、次の手順を実行することで、このようなカスタム ビルド処理を DefaultTemplate.xaml に基づいて作成できます。

  • 手順 1. ビルド定義とビルド プロセス テンプレート

    • ビルド定義を作成します (たとえば、OurTeamBuild という名前にします)。 [プロセス] タブで、ビルド定義のベースを新しいビルド プロセス テンプレート (たとえば CustomOutputDirInline.xaml) にします。

    • CustomOutputDirInline.xaml で、コードをコンパイルする Run MSBuild for Project アクティビティのインスタンスで次の手順を実行します。

      • 値を削除して空の文字列にすることで、Run MSBuild for Project アクティビティの OutDir プロパティを無効にします。

        注意

        この変更を行わないと、コード プロジェクトで実装したカスタマイズ済みのディレクトリ構造ロジックは、すべて OutDir プロパティによって上書きされます。

      • ビルド エージェントの格納フォルダーが含まれている文字列値を BinariesDirectory 変数から収集し、MSBuild の引数 (たとえば TeamBuildOutDir) として渡します。

  • 手順 2. コード プロジェクト

    • OurTeamBuild ビルドがコンパイルする各コード プロジェクトで、適切な要素 (OutputPath または OutDir) を追加して、格納フォルダーに作成されるサブディレクトリ構造を定義します。

以下では、これらの手順を実行する方法について詳しく説明します。

ビルド定義と CustomOutputDirInline カスタム ビルド プロセス テンプレートを作成する

ビルド定義を作成して、そのベースを新しいビルド プロセス テンプレートにすることで、ビルド処理の基礎を作ります。

ビルド定義とビルド プロセス テンプレートを作成するには

  1. ビルド定義を作成します。

    1. [全般] タブで、ビルド定義に名前を付けます (たとえば、OurTeamBuild とします)。

    2. [プロセス] タブで、ビルドするソリューションを追加します。

      詳細については、「基本的なビルド定義の作成」を参照してください。

  2. OurTeamBuild ビルド定義の [プロセス] タブで、ビルド プロセス テンプレートを新しいビルド プロセス テンプレートに設定します。新しいテンプレートは、CustomOutputDirInline.xaml という名前で、既定のテンプレート (DefaultTemplate.xaml) に基づくものにします。

    詳細については、「カスタム ビルド プロセス テンプレートの作成と使用」を参照してください。

  3. ソース管理エクスプローラーでチーム プロジェクトを開き、ビルド プロセス テンプレートを含むフォルダーを表示します。

    既定では、このサブディレクトリ名は BuildProcessTemplates です。

  4. この手順で前に作成した CustomOutputDirInline.xaml ファイルをチェックアウトしてダブルクリックします。

  5. ワークフロー デザイナーで、次の構造にある Run MSBuild for Project アクティビティの 2 番目のインスタンスを見つけます。

    1. シーケンス (Sequence) >

    2. エージェントで実行 (AgentScope) >

    3. 変更セットと作業項目のコンパイル、テスト、および関連付けを試す (TryCatch [Try]) >

    4. シーケンス (Sequence) >

    5. 変更セットと作業項目のコンパイル、テスト、および関連付けを行う (Parallel) >

    6. コンパイルとテストの試行 TryCatch [Try] >

    7. コンパイルとテスト Sequence >

    8. BuildSettings.PlatformConfigurations の構成ごと ForEach [Body] >

    9. 構成のコンパイルおよびテスト Sequence >

    10. BuildSettings.HasProjectsToBuild かどうか If [Then] >

    11. BuildSettings.ProjectsToBuild のプロジェクトごと ForEach [Body] >

    12. プロジェクトのコンパイルを試す TryCatch [Try] >

    13. プロジェクトのコンパイル Sequence >

    14. プロジェクトで MSBuild を実行する MSBuild

    この構造を移動する方法については、「複雑な Windows Workflow 内の移動」を参照してください。

  6. Run MSBuild for Project アクティビティを右クリックし、[プロパティ] をクリックします。

  7. [プロパティ] ペインで、OutDir ボックスのデータを削除して、このプロパティを空の文字列に設定します。

  8. [プロパティ] ペインで、CommandLineArguments プロパティを次の値に設定します。

    String.Format("/p:SkipInvalidConfigurations=true;TeamBuildOutDir=""{0}"" {1}",
    BinariesDirectory, MSBuildArguments)
    
  9. CustomOutputDirInline.xaml を保存します。

  10. ソース管理エクスプローラーで、変更をこのファイルにチェックインします。

格納フォルダー ロジックをコード プロジェクトに埋め込む

ビルド定義とカスタム ビルド プロセス テンプレートを作成したので、このビルド処理がコンパイルする各コード プロジェクトにディレクトリ構造ロジックを埋め込む必要があります。

注意

DefaultTemplate.xaml ワークフローは、MSBuild コンパイラを通じて各プロジェクトを反復的に実行するわけではないため、このロジックをワークフロー自体に埋め込むことはできません。 代わりに、ワークフローは MSBuild を 1 回呼び出して、すべてのソリューションおよびプロジェクトをコンパイルします。

格納フォルダー ロジックを埋め込むには

  1. ソース管理エクスプローラーで、OurTeamBuild ビルド定義がビルドするソリューションを開きます。

  2. 必要な出力ディレクトリ要素を、ソリューション内の各コード プロジェクトに追加します。 Visual C# や Visual Basic などのマネージ コード プロジェクトの場合、このプロパティは OutputPath です。 Visual C++ プロジェクトの場合、このプロパティは OutDir です。 ソリューション内のコード プロジェクトごとに、次の手順に従います。

    1. ソリューション エクスプローラーで、プロジェクトを右クリックします。 [プロジェクトのアンロード] コマンドが使用できる場合はクリックします。

    2. プロジェクトを右クリックし、[<ProjectName> の編集] をクリックします。

    3. 次のいずれかの操作を実行します。

      • プロジェクトが Visual C# や Visual Basic などのマネージ コード プロジェクトの場合: OutputPath 要素を追加します。 次の例に示すように、この要素は、既にコード プロジェクトに存在する最後の OutputPath 要素の後に配置する必要があります。

        <Project DefaultTargets="Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003 ...">
         ...
        <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86'">
         ...
         <OutputPath>bin\Debug\</OutputPath>
         ...
        </PropertyGroup>
        <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
         ...
         <OutputPath>bin\Release\</OutputPath>
         ...
        </PropertyGroup>
        
        <PropertyGroup Condition="$(TeamBuildOutDir) != '' ">
        <OutputPath>$(TeamBuildOutDir)\$(SolutionName)\$(MSBuildProjectName)\$(Configuration)</OutputPath>
        </PropertyGroup>
        
      • プロジェクトが Visual C++ プロジェクトの場合: OutDir 要素を追加します。 次の例に示すように、この要素は、Microsoft.Cpp.targets をインポートする要素の前に配置する必要があります。

        <Project DefaultTargets="Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003 ...">
        ...
        
        <PropertyGroup Condition="$(TeamBuildOutDir) != '' ">
         <OutDir>$(TeamBuildOutDir)\$(SolutionName)\$(MSBuildProjectName)\$(Configuration)\</OutDir>
        </PropertyGroup>
        
        <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
        </Project>
        
    4. コード プロジェクトを保存します。

  3. ソリューション エクスプローラーでソリューションを右クリックし、[チェックイン] をクリックします。

  4. OurTeamBuild がビルドするソリューションごとにこれらの手順を繰り返します。

集中管理される 2 つのファイルに保持したロジックを使用して、コンパイルされたバイナリを整理する

多数のコード プロジェクトを管理している場合は、OutputPath 要素と OutDir 要素を 2 つの共有ファイルに保持すると、前のセクションで説明した過程を強化できます。 この方法では、各コード プロジェクトを変更する代わりに、集中管理される 2 つのファイルを変更することで、格納フォルダーのディレクトリ構造をより簡単に変更できます。

処理の概要

次の図は、ビルド処理などを実装する方法の概要を示しています。

カスタムの出力ロジックをインポートしたフロー

手順の概要

要約すると、このようなカスタム ビルド処理を DefaultTemplate.xaml に基づいて作成するには、次の手順を実行する必要があります。

  • ソース管理エクスプローラーで、共通の MSBuild コードを格納するディレクトリ (たとえば $/OurTeam/BuildProcessMSBuild) を作成します。 このディレクトリで、格納フォルダーに作成されるサブディレクトリ構造を定義する MSBuild ファイルを作成して格納します。

  • 手順 1. ビルド定義とビルド プロセス テンプレート

    • 次の手順に従って、ビルド定義 (たとえば OurTeamBuild) を更新します。

      • [ワークスペース] タブで、$/OurTeam/BuildProcessMSBuild ディレクトリをマップします。

      • [プロセス] タブで、ビルド定義のベースを新しいビルド プロセス テンプレート (たとえば CustomOutputDirImport.xaml) にします。

    • CustomOutputDirImport.xaml で、次の手順に従います。

      • LocalPathToMSBuildCode を、Run On Agent アクティビティにスコープされる String 変数として宣言します。

      • ServerPathToMSBuildCode を引数として宣言します。

        この引数を追加したら、OurTeamBuild 定義を変更する必要があります。 [プロセス] タブで、このビルド プロセス パラメーターの値として「$/OurTeam/BuildProcessMSBuild」と入力します。

      • Run on Agent > アクティビティで、Try Compile, Test, and Associate Changesets and Work Items [Try] アクティビティの前に ConvertWorkspaceItem アクティビティを追加して、ServerPathToMSBuildCode 引数を MSBuild で処理できるビルド エージェント上のローカル パスに変換します。 次に、この値を LocalPathToMSBuildCode 変数に設定します。

      • コードをコンパイルする Run MSBuild for Project アクティビティのインスタンスで、次の手順に従います。

        • 値を削除して空の文字列にすることで、Run MSBuild for Project アクティビティの OutDir プロパティを無効にします。

          注意

          この変更を行わないと、コード プロジェクトで実装したカスタマイズ済みのディレクトリ構造ロジックは、すべて OutDir プロパティによって上書きされます。

        • ビルド エージェントの格納フォルダーが含まれている文字列値を BinariesDirectory 変数から収集し、その値を MSBuild の引数 (たとえば TeamBuildOutDir) として渡します。

        • LocalPathToMSBuildCode の値を MSBuild の引数 (たとえば CommonMSBuildCode) として渡します。

  • 手順 2. コード プロジェクト

    • OurTeamBuild がコンパイルする各コード プロジェクトで、<Import /> 要素を適切な場所に追加します。

以下では、これらの手順に従う方法について詳しく説明します。

格納フォルダー ロジックを含む MSBuild 共通コード ファイルを作成する

この方法では、ディレクトリと 2 つの MSBuild プロジェクト ファイルを作成することから始めます。 これらのファイルには、格納フォルダーに作成されるサブディレクトリ構造を定義するロジックが格納されます。

ファイルを作成するには

  1. ソース管理エクスプローラーで、次のいずれかの手順を実行します。

    • MSBuild 共通コードを格納するディレクトリを見つけます。

    • MSBuild 共通コードを格納するディレクトリを作成し、たとえば $/OurTeam/BuildProcessMSBuild という名前を付けます。

  2. ソース管理エクスプローラーの上部にある [ローカル パス] ラベルの横に [マップされていません] というリンクが表示された場合は、リンクをクリックして、サーバー ディレクトリをローカル ワークスペースの適切なディレクトリにマップします。

  3. 次のファイルを作成および保存して、$/OurTeam/BuildProcessMSBuild にチェックインします。

    • Visual C# や Visual Basic など、マネージ コード プロジェクトの格納フォルダー ロジックを含むファイル (たとえば ManagedCodeProjectOutDir.targets という名前にします)。

      <Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup Condition="$(TeamBuildOutDir) != '' ">
       <OutputPath>$(TeamBuildOutDir)\$(SolutionName)\$(MSBuildProjectName)\$(Configuration)</OutputPath>
      </PropertyGroup>
      </Project>
      
    • Visual C++ コード プロジェクトの格納フォルダー ロジックを含むファイル (たとえば、CPPCodeProjectOutDir.targets という名前にします)。

      <Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup Condition="$(TeamBuildOutDir) != '' ">
       <OutDir>$(TeamBuildOutDir)\$(SolutionName)\$(MSBuildProjectName)\$(Configuration)\</OutDir>
      </PropertyGroup>
      </Project>
      

ビルド定義と CustomOutputDirImport カスタム ビルド プロセス テンプレートを作成する

このトピックの前の手順で作成した、OurTeamBuild という名前のビルド定義を再び使用できます。 新しいビルド プロセス テンプレートをベースとし、追加の調整を加えます。

ビルド定義とビルド プロセス テンプレートを作成するには

  1. チーム エクスプローラーで、OurTeamBuild を右クリックし、[編集] をクリックします。

  2. [プロセス] タブをクリックし、[ビルド プロセス テンプレート] を新しいビルド プロセス テンプレートに設定します。新しいテンプレートは、CustomOutputDirImport.xaml という名前で、既定のテンプレート (DefaultTemplate.xaml) に基づくものにします。

    詳細については、「カスタム ビルド プロセス テンプレートの作成と使用」を参照してください。

  3. ソース管理エクスプローラーでチーム プロジェクトを開き、ビルド プロセス テンプレートを含むフォルダーを表示します。 既定では、このサブディレクトリの名前は BuildProcessTemplates です。

  4. この手順で前に作成した CustomOutputDirImport.xaml ファイルをチェックアウトしてダブルクリックします。

  5. ワークフロー デザイナーで、次の構造にある Run MSBuild for Project アクティビティを見つけます。

    1. シーケンス (Sequence) >

    2. エージェントで実行 (AgentScope) >

    この構造を移動する方法については、「複雑な Windows Workflow 内の移動」を参照してください。

  6. ウィンドウの下部にある [引数] をクリックします。

  7. [引数] ペインで、引数を作成して ServerPathToMSBuildCode という名前を付けます。

  8. [プロパティ] ペインの [IsRequired] チェック ボックスをオンにします。

  9. ウィンドウの下部にある [変数] をクリックします。

  10. [変数] ペインで、LocalPathToMSBuildCode という名前の変数を String 型として宣言します。スコープは Run On Agent に設定します。

  11. [ツールボックス][Team Foundation ビルドのアクティビティ] から、ConvertWorkspaceItem アクティビティを Initialize Workspace アクティビティと If CreateLabel アクティビティの間の場所にドラッグします。

    注意

    [ツールボックス][Team Foundation ビルドのアクティビティ] セクションが表示されない場合は、このセクションをMicrosoft.TeamFoundation.Build.Workflow.dll アセンブリから手動で追加できます。 詳細については、「How to: Add Activities to the Toolbox」を参照してください。

  12. ConvertWorkspaceItem アクティビティを右クリックし、[プロパティ] をクリックします。

  13. [プロパティ] ペインで、次のプロパティ値を設定します。

    • [表示名]: Get Local Path to MSBuild Code

    • [入力]: ServerPathToMSBuildCode

    • [結果]: LocalPathToMSBuildCode

    • [ワークスペース]: Workspace

  14. 次の構造にある Run MSBuild for Project アクティビティの 2 番目のインスタンスを見つけます。

    1. シーケンス (Sequence) >

    2. エージェントで実行 (AgentScope) >

    3. 変更セットと作業項目のコンパイル、テスト、および関連付けを試す (TryCatch [Try]) >

    4. シーケンス (Sequence) >

    5. 変更セットと作業項目のコンパイル、テスト、および関連付けを行う (Parallel) >

    6. コンパイルとテストの試行 TryCatch [Try] >

    7. コンパイルとテスト Sequence >

    8. BuildSettings.PlatformConfigurations の構成ごと ForEach [Body] >

    9. 構成のコンパイルおよびテスト Sequence >

    10. BuildSettings.HasProjectsToBuild かどうか If [Then] >

    11. BuildSettings.ProjectsToBuild のプロジェクトごと ForEach [Body] >

    12. プロジェクトのコンパイルを試す TryCatch [Try] >

    13. プロジェクトのコンパイル Sequence >

    14. プロジェクトで MSBuild を実行する MSBuild

    この構造を移動する方法については、「複雑な Windows Workflow 内の移動」を参照してください。

  15. Run MSBuild for Project アクティビティを右クリックし、[プロパティ] をクリックします。

  16. [プロパティ] ペインで、OutDir ボックスのデータを削除して、このプロパティを空の文字列に設定します。

  17. [プロパティ] ペインで、CommandLineArguments プロパティを次の値に設定します。

    String.Format("/p:SkipInvalidConfigurations=true;CommonMSBuildCode=""{0}"";TeamBuildOutDir=""{1}"" {2}",
    LocalPathToMSBuildCode, BinariesDirectory, MSBuildArguments)
    
  18. CustomOutputDirImport.xaml を保存します。

    ソース管理エクスプローラーで、変更をこのファイルにチェックインします。

OurTeamBuild ビルド定義を更新する

次に、OurTeamBuild ビルド定義に変更を加える必要があります。

ビルド定義を更新するには

  1. チーム エクスプローラーで、作業するチーム プロジェクトを展開して [ビルド] フォルダーを展開し、OurTeamBuild ビルド定義を右クリックして [ビルド定義の編集] をクリックします。

  2. [ワークスペース] タブをクリックして、次の値を含むエントリを追加します。

    • [状態]: アクティブ

    • [ソース管理フォルダー]: $/OurTeam/BuildProcessMSBuild

    • [ビルド エージェント フォルダー]: $(SourceDir)\BuildProcessMSBuild

  3. [プロセス] タブをクリックし、ServerPathToMSBuildCode ボックスに「$/OurTeam/BuildProcessMSBuild」と入力します。

  4. ビルド定義を保存します。

格納フォルダー ロジックをコード プロジェクトにインポートする

ビルド定義とカスタム ビルド プロセス テンプレートを作成したら、コード プロジェクトを更新してディレクトリ構造ロジックをインポートする必要があります。

格納フォルダー ロジックをインポートするには

  1. ソース管理エクスプローラーで、OurTeamBuild がビルドするソリューションをダブルクリックします。

  2. ソリューション内のコード プロジェクトごとに、次の手順に従います。

    1. ソリューション エクスプローラーで、プロジェクトを右クリックします。 [プロジェクトのアンロード] コマンドが使用できる場合はクリックします。

    2. プロジェクトを右クリックし、[<ProjectName> の編集] をクリックします。

    3. 次のいずれかの操作を実行します。

      • プロジェクトが Visual C# や Visual Basic などのマネージ コード プロジェクトの場合: 次の例に示すように、既にコード プロジェクトにある最後の OutputPath 要素の後に Import 要素を追加します。

        <Project DefaultTargets="Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003 ...">
         ...
        <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86'">
         ...
         <OutputPath>bin\Debug\</OutputPath>
         ...
        </PropertyGroup>
        <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
         ...
         <OutputPath>bin\Release\</OutputPath>
         ...
        </PropertyGroup>
        
        <Import Condition=" $(CommonMSBuildCode) != ''" Project="$(CommonMSBuildCode)\ManagedCodeProjectOutDir.targets"/>
        
      • プロジェクトが Visual C++ プロジェクトの場合: 次の例に示すように、Microsoft.Cpp.targets をインポートする要素の前に Import 要素を追加します。

        <Project DefaultTargets="Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003 ...">
        ...
        <Import Condition=" $(CommonMSBuildCode) != ''" Project="$(CommonMSBuildCode)\CPPCodeProjectOutDir.targets"/>
        
        <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
        </Project>
        
    4. コード プロジェクトを保存します。

  3. ソリューション エクスプローラーでソリューションを右クリックし、[チェックイン] をクリックします。

  4. OurTeamBuild がビルドするソリューションごとにこの手順を繰り返します。

次の手順

続いて、次のタスクを実行できます。

  • 格納フォルダー ロジックを変更する。 チームの要件を満たすため、前のセクションで用意した OutputPath 要素と OutDir 要素の内容を変更できます。

  • カスタマイズしたコード プロジェクトをテンプレートとして保存する。 チームで多数のコード プロジェクトを作成する場合は、新しいコード プロジェクトにカスタムの MSBuild ロジックを自動的に含めることができます。 ソリューション エクスプローラーで、コード プロジェクトをクリックし、[ファイル] メニューの [テンプレートのエクスポート] をクリックします。

その他のリソース

詳細については、Microsoft Web サイトの以下のトピックを参照してください。

参照

概念

ソース管理エクスプローラーの使用

ワークスペースの作成とチーム プロジェクトの操作

その他の技術情報

MSBuild リファレンス