次の方法で共有


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

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

注意

事前に「.NET Framework の特定のバージョンを対象とする MSBuild の使用」を読み、ツールセット、ターゲット フレームワーク、および 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 2010 プロジェクトは、すべてのプロジェクトを自動的に 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 2010 の MSBuild の DefaultToolsVersion 値は 2.0 です。 DefaultToolsVersion の値はホスト固有の構成ファイルでオーバーライドできます。 他の値は .NET Framework の各バージョンのインストール パスを定義します。

注意

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

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

標準ツールセットがビルド要件に適合しない場合は、カスタム ツールセットを作成できます。 たとえば、ビルド ラボ シナリオで、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>

注意

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

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

注意

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

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

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

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

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

参照

概念

MSBuild の詳細な概念