カスタム ツールセット構成を作成する

MSBuild ツールセットには、アプリケーション プロジェクトのビルドに使用できるタスク、ターゲット、ツールへの参照が含まれています。 MSBuild には標準ツールセットが用意されていますが、カスタム ツールセットを作成することもできます。

標準ツールセット構成

MSBuild には、現在のバージョンの MSBuild を参照する標準ツールセット Current が含まれています。これは、Visual Studio インストール ディレクトリの下にあるフォルダー MSBuild\Current\Bin にインストールされます。

カスタム ツールセット定義

標準ツールセットがビルド要件に適合しない場合は、カスタム Toolset を作成できます。 たとえば、ビルド ラボ シナリオで、C++ プロジェクトをビルドするために個別のシステムが必要になる場合があります。 カスタム Toolset を使用することにより、MSBuild.exe の実行時に /toolsVersion コマンド ライン スイッチを使用して ToolsVersion 属性にカスタム値を割り当てることができます。 プロジェクトファイルで ToolsVersion 属性を指定した場合、それは無視されます。

これを行うことで、$(MSBuildToolsPath) プロパティを使用して、該当のディレクトリから .targets ファイルをインポートできます。また、カスタム ツールセットを使用するすべてのプロジェクトで利用できる独自のカスタム ツールセット プロパティを定義することもできます。

カスタム ツールセットは、MSBuild.exe の構成ファイルに指定します。ただし、MSBuild エンジンをホストするカスタム ツールを使用している場合は、そのカスタム ツールの構成ファイルに指定します。 たとえば、MyCustomToolset という名前のツールセットを定義する場合は、MSBuild.exe の構成ファイルに次のような Toolset 定義を含めることができます。

<msbuildToolsets default="MyCustomToolset">
   <toolset toolsVersion="MyCustomToolset">
      <property name="MSBuildToolsPath"
        value="C:\SpecialPath" />
   </toolset>
</msbuildToolsets>

また <msbuildToolsets> は、構成ファイル内で次のように定義する必要があります。

<configSections>
   <section name="msbuildToolsets"
       type="Microsoft.Build.BuildEngine.ToolsetConfigurationSection,
       Microsoft.Build, Version=15.1.0.0, Culture=neutral,
       PublicKeyToken=b03f5f7f11d50a3a">
   </section>
</configSections>

Note

コードが正しく読み込まれるようにするには、<configSections><configuration> セクション内の最初のサブセクションにする必要があります。

ToolsetConfigurationSection は、どのような MSBuild ホストでもカスタム構成として使用できるカスタム構成セクションです。 カスタム ツールセットを使用した場合、ホストでは、構成ファイル エントリの提供を除き、ビルド エンジンの初期化処理は必要ありません。

プロジェクトで使用される ToolsVersion 値に固有のプロパティを次に示します。

  • $(MSBuildBinPath) は、ToolsVersion が定義されているレジストリまたは構成ファイルで指定された ToolsPath 値に設定されます。 レジストリまたは構成ファイルの $(MSBuildToolsPath) 設定は、コア タスクとコア ターゲットの場所を指定します。 プロジェクト ファイルでは、この設定が $(MSBuildBinPath) プロパティにマップされ、さらに $(MSBuildToolsPath) プロパティにもマップされます。

  • $(MSBuildToolsPath): このプロパティは予約済みのプロパティであり、構成ファイルで指定されている MSBuildToolsPath プロパティによって提供されます (このプロパティは $(MSBuildBinPath) に代わるものです。ただし、$(MSBuildBinPath) も互換性のために残されています)。カスタム ツールセットでは、$(MSBuildToolsPath) または $(MSBuildBinPath) のいずれか一方を定義してください。両方定義する場合は、これらのプロパティは同じ値になる必要があります。

    MSBuildToolsPath プロパティを追加する場合と同じ構文を使用して、ToolsVersion 固有のカスタム プロパティを構成ファイルに追加することもできます。 このようなカスタム プロパティをプロジェクト ファイルで利用できるようにするには、構成ファイルに指定された値の名前と同じ名前を使用します。 構成ファイルではツールセットを定義できますが、サブツールセットは定義できません。