標準ツールセット構成とカスタム ツールセット構成

更新 : 2007 年 11 月

MSBuild 3.5 には、2 つの定義済みツールセットが用意されています。ツールセットは、プロジェクトのビルドに使用できるタスク、ターゲット、およびコマンド ライン ツールのセットです。カスタム ツールセットを独自に作成することもできます。

Bb397428.alert_note(ja-jp,VS.90).gifメモ :

事前に「MSBuild で特定の .NET Framework を対象にする」を読み、ツールセット、ターゲット フレームワーク、および ToolsVersion について十分に理解しておくことをお勧めします。

ツールセットの種類

カスタム ツールセットを定義すると、$(MSBuildToolsPath) が参照するディレクトリの値も定義されます。したがって、プロジェクト ファイルで $(MSBuildToolsPath) を使用することによってタスクやターゲットをインポートできるため、タスク値やターゲット値をプロジェクト ファイルにハードコーディングする必要がなくなります。これにより、レジストリまたは構成ファイルでツールセットをグローバルに定義できるため、開発者のデスクトップやビルド ラボ シナリオでのビルドが可能になります。

ツールセットを使用すると、.NET Framework の特定のバージョンを MSBuild の対象とすることができます。これにより、Visual Studio 2008 だけで動作するプロジェクトをビルドでき、Visual Studio 2008 で Visual Studio 2005 プロジェクトをビルドすることもできます。

Visual Studio 2008 には、2 つの "標準" ツールセットが用意されています。1 つは Visual Studio 2005 の MSBuild 2.0 にも付属していたもので、.NET Framework 2.0 を対象とします。もう 1 つは MSBuild 3.5 に含まれており、.NET Framework 2.0、.NET Framework 3.0、および .NET Framework 3.5 を対象とすることができます。

標準ツールセット構成

MSBuild 3.5 には以下の標準ツールセットが含まれています。

ToolsVersion

MSBuildToolsPath または MSBuildBinPath

2.0

<Windows installation path>\Microsoft.Net\Framework\v2.0.50727\

3.5

<Windows installation path>\Microsoft.NET\Framework\v3.5.20223\

標準ツールセットは、MSBuild.exe を実行するか MSBuild Engine のインスタンスを作成することにより、コンピュータ上のどこでも使用できます。ただし、ツールセット内の情報が MSBuild.exe.config ファイルまたはホスト固有の構成ファイルでオーバーライドされていないことが必要です。

ToolsVersion 値は、プロジェクト ファイルの Project タグに属性として指定され、Visual Studio で生成されたプロジェクトが使用するツールセットを決定します。ToolsVersion は、ツールセットの "名前" と考えることができます。プロジェクトに ToolsVersion が指定されていない場合は、既定の ToolsVersion が使用されます。MSBuild 3.5 では、既定の ToolsVersion 値が 2.0 に設定されます。この既定値の場合、明示的な ToolsVersion を指定せずにビルドしたプロジェクトは Visual Studio 2005 に含まれていた 2.0 ツールセットを使用します。Visual Studio 2008 プロジェクトは、すべてのプロジェクトを自動的に ToolsVersion 値 3.5 で生成します。この場合、新しいツールセットを使用するため、.NET Framework のすべてのバージョンを対象とすることができます。

標準ツールセットの情報は、次のレジストリ キーに定義されています。

レジストリ ハイブ

文字列キー名

文字列キー値

\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\3.5\

DefaultToolsVersion

2.0

\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\2.0\

ToolsPath

.NET Framework 2.0 インストール パス

\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\3.5\

ToolsPath

.NET Framework 3.5 インストール パス

DefaultToolsVersion は、ツールセットが指定されていないプロジェクトをビルドするときに使用されるツールセットを指定します。たとえば、Visual Studio 2008 の MSBuild の DefaultToolsVersion 値は 2.0 です。DefaultToolsVersion の値はホスト固有の構成ファイルでオーバーライドできます。他の値は .NET Framework の各バージョンのインストール パスを定義します。

Bb397428.alert_note(ja-jp,VS.90).gifメモ :

これらの設定は必要な場合を除き変更しないことをお勧めします。ただし、独自の設定を追加し、コンピュータ全体に適用されるカスタム ツールセット定義を作成することもできます。その手順については次のセクションで説明します。

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

標準ツールセットがビルド要件に適合しない場合は、カスタム ツールセットを作成できます。たとえば、ビルド ラボ シナリオで、Visual C++ プロジェクトをビルドするために別個のビルド システムが必要となる場合もあります。カスタム ツールセットを使用することにより、プロジェクトの作成時や MSBuild.exe の実行時に ToolsVersion 属性にカスタム値を割り当てることができます。これによって、$(MSBuildToolsPath) プロパティを使用し、そのディレクトリから .targets ファイルをインポートすることもできます (また、別のツールセットを定義するのは気が進まない場合は、環境変数を使用することも可能です)。

カスタム ツールセットは、MSBuild.exe (MSBuild エンジンをホストする別のツールがある場合は MSBuild のカスタム ホスト) の構成ファイルに指定します。たとえば、MSBuild.exe の構成ファイルに次のようなツールセット定義を追加できます。

<msbuildToolsets default="3.0">
   <toolset toolsVersion="4.0">
      <property name="MSBuildToolsPath" 
        value="C:\Windows\Microsoft .NET\Framework\v3.0" />
   </toolset>
</msbuildToolsets>

<msbuildToolsets> はカスタム .NET 構成セクションであり、これも次のように構成ファイルに定義する必要があります。

<configSections>
   <section name="msbuildToolsets"       
       Type="Microsoft.Build.BuildEngine.ToolsetConfigurationSection, 
       Microsoft.Build.Engine, Version=3.5.0.0, Culture=neutral, 
       PublicKeyToken=b03f5f7f11d50a3a"
   </section>
</configSections>
Bb397428.alert_note(ja-jp,VS.90).gifメモ :

コードが正しく読み込まれるようにするには、configSections タグを構成タグの直後に置くことが必要です。

ToolsetConfigurationSection は、どのようなホストでもカスタム構成として使用できるカスタム構成セクションです。カスタム ツールセットを使用した場合、ホストでは、構成ファイル エントリの提供を除き、ビルド エンジンの初期化処理は必要ありません。レジストリにエントリを定義することにより、コンピュータ全体に適用されるツールセットを指定し、MSBuild.exe、Visual Studio、および MSBuild のすべてのホストで使用できます。

Bb397428.alert_note(ja-jp,VS.90).gifメモ :

レジストリに定義済みの ToolsVersion の設定を構成ファイルに定義した場合、2 つの定義はマージされません。構成ファイル内の定義が優先され、同じ ToolsVersion のレジストリ内の設定は無視されます。

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

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

  • $(MSBuildToolsPath) - 予約済みのプロパティであり、構成ファイルに指定された MSBuildToolsPath プロパティによって提供されます (このプロパティは $(MSBuildBinPath) に代わるものです。ただし、$(MSBuildBinPath) も互換性のために残されています)。

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

参照

概念

MSBuild の詳細な概念