標準ツールセット構成とカスタム ツールセット構成Standard and Custom Toolset Configurations

MSBuild ツールセットには、アプリケーション プロジェクトのビルドに使用できるタスク、ターゲット、およびツールへの参照が含まれています。An MSBuild Toolset contains references to tasks, targets, and tools that you can use to build an application project. MSBuild には標準ツールセットが用意されていますが、カスタム ツールセットを作成することもできます。MSBuild includes a standard Toolset, but you can also create custom Toolsets. ツールセットを指定する方法については、「ツールセット (ToolsVersion)」を参照してください。For information about how to specify a Toolset, see Toolset (ToolsVersion)

標準ツールセット構成Standard Toolset Configurations

MSBuild 12.0 には以下の標準ツールセットが含まれています。MSBuild 12.0 includes the following standard Toolsets:

ToolsVersionToolsVersion ツールセットのパス (MSBuildToolsPath ビルド プロパティまたは MSBuildBinPath ビルド プロパティで指定)Toolset Path (as specified in the MSBuildToolsPath or MSBuildBinPath build property)
2.02.0 Windows インストール パス\Microsoft.Net\Framework\v2.0.50727\Windows installation path\Microsoft.Net\Framework\v2.0.50727\
3.53.5 Windows インストール パス\Microsoft.NET\Framework\v3.5\Windows installation path\Microsoft.NET\Framework\v3.5\
4.04.0 Windows インストール パス\Microsoft.NET\Framework\v4.0.30319\Windows installation path\Microsoft.NET\Framework\v4.0.30319\
12.012.0 %ProgramFiles%\MSBuild\12.0\bin%ProgramFiles%\MSBuild\12.0\bin

ToolsVersion の値によって、Visual Studio で生成されたプロジェクトが使用するツールセットが決まります。The ToolsVersion value determines which Toolset is used by a project that Visual Studio generates. Visual Studio 2013Visual Studio 2013 では、既定値は "12.0" です (プロジェクト ファイルにどのバージョンが指定されている場合でも)。ただし、コマンド プロンプトで /toolsversion スイッチを使用して、この属性をオーバーライドできます。In Visual Studio 2013Visual Studio 2013 the default value is "12.0" (no matter what the version specified in the project file), but you can override that attribute by using the /toolsversion switch at a command prompt. この属性に関する情報と ToolsVersion を指定するその他の方法については、「ToolsVersion 設定のオーバーライド」を参照してください。For information about this attribute and other ways to specify the ToolsVersion, see Overriding ToolsVersion Settings.

ToolsVersion が指定されていない場合、レジストリ キー HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\<Version Number>\DefaultToolsVersion は、常に 2.0 である ToolsVersion を定義します。If the ToolsVersion isn't specified, the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\<Version Number>\DefaultToolsVersion defines the ToolsVersion, which is always 2.0.

次のレジストリ キーは、MSBuild.exe のインストール パスを指定します。The following registry keys specify the installation path of MSBuild.exe.

レジストリ キーRegistry Key キー名Key Name 文字列キー値String Key Value
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\2.0\\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\2.0\ MSBuildToolsPathMSBuildToolsPath .NET Framework 2.0 インストール パス.NET Framework 2.0 Install Path
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ MSBuild\ToolsVersions\3.5\\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ MSBuild\ToolsVersions\3.5\ MSBuildToolsPathMSBuildToolsPath .NET Framework 3.5 インストール パス.NET Framework 3.5 Install Path
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ MSBuild\ToolsVersions\4.0\\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ MSBuild\ToolsVersions\4.0\ MSBuildToolsPathMSBuildToolsPath .NET Framework 4 インストール パス.NET Framework 4 Install Path
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ MSBuild\ToolsVersions\12.0\\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ MSBuild\ToolsVersions\12.0\ MSBuildToolsPathMSBuildToolsPath MSBuild インストール パスMSBuild Install Path

サブツールセットSub-toolsets

前の表のレジストリ キーにサブキーがある場合、MSBuild ではそのサブキーを使用して、親ツールセットのパスをオーバーライドできる可能性があるサブツールセットを特定します。If the registry key in the previous table has a subkey, MSBuild uses it to determine the path of a sub-toolset may override the path in the parent toolset. たとえば、次のようなサブキーがあります。The following subkey is an example:

\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\12.0\12.0\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\12.0\12.0

基本ツールセットと選択されたサブツールセットの両方でプロパティが定義されている場合、サブツールセットのプロパティ定義が使用されます。If any properties are defined in both the base toolset and the selected sub-toolset, the property definitions in the sub-toolset are used. たとえば、MSBuild 4.0 ツールセットで、7.0A SDK を指す SDK40ToolsPath が定義されているが、MSBuild 4.0\11.0 ツールセットでは、同じプロパティが 8.0A SDK を指すように定義されているとします。For example, the MSBuild 4.0 toolset defines SDK40ToolsPath to point to the 7.0A SDK, but the MSBuild 4.0\11.0 toolset defines the same property to point to the 8.0A SDK. VisualStudioVersion が設定されていない場合、SDK40ToolsPath は 7.0A を指しますが、VisualStudioVersion が 11.0 に設定されている場合、このプロパティは 7.0A ではなく 8.0A を指します。If VisualStudioVersion is unset, SDK40ToolsPath would point to 7.0A, but if VisualStudioVersion is set to 11.0, the property would instead point to 8.0A.

VisualStudioVersion ビルド プロパティは、サブツールセットをアクティブにするかどうかを示します。The VisualStudioVersion build property indicates whether a sub-toolset becomes active. たとえば、VisualStudioVersion の値が "12.0" である場合は、MSBuild 12.0 サブツールセットを指定します。For example, a VisualStudioVersion value of "12.0" specifies the MSBuild 12.0 sub-toolset. 詳細については、「ツールセット (ToolsVersion)」の「サブツールセット」のセクションを参照してください。For more information, see the Sub-toolsets section of Toolset (ToolsVersion).

注意

これらの設定は変更しないことをお勧めします。We recommend that you avoid changing these settings. ただし、独自の設定を追加し、コンピューター全体に適用されるカスタム ツールセットの定義を指定することはできます。その手順については次のセクションで説明します。Nevertheless, you can add your own settings and define computer-wide custom toolset definitions, as the next section describes.

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

標準ツールセットがビルド要件に適合しない場合は、カスタム ツールセットを作成できます。When a standard Toolset does not fulfill your build requirements, you can create a custom Toolset. たとえば、ビルド ラボ シナリオで、Visual C++Visual C++ プロジェクトをビルドするために個別のシステムが必要になる場合があります。For example, you may have a build lab scenario in which you must have a separate system for building Visual C++Visual C++ projects. カスタム ツールセットを使用することにより、プロジェクトの作成時や MSBuild.exe の実行時に ToolsVersion 属性にカスタム値を割り当てることができます。By using a custom Toolset, you can assign custom values to the ToolsVersion attribute when you create projects or run MSBuild.exe. これを行うことで、$(MSBuildToolsPath) プロパティを使用して、該当のディレクトリから .targets ファイルをインポートできます。また、カスタム ツールセットを使用するすべてのプロジェクトで利用できる独自のカスタム ツールセット プロパティを定義することもできます。By doing this, you can also use the $(MSBuildToolsPath) property to import .targets files from that directory, as well as defining your own custom toolset properties that can be used for any project that uses that toolset.

カスタム ツールセットは、MSBuild.exe の構成ファイルに指定します。ただし、MSBuild エンジンをホストするカスタム ツールを使用している場合は、そのカスタム ツールの構成ファイルに指定します。Specify a custom Toolset in the configuration file for MSBuild.exe (or for the custom tool that hosts the MSBuild engine if that is what you are using). たとえば、ToolsVersion 12.0 の既定の動作をオーバーライドする場合、MSBuild.exe の構成ファイルには次のようなツールセット定義を含めることができます。For example, the configuration file for MSBuild.exe could include the following Toolset definition if you wished to override the default behavior of ToolsVersion 12.0.

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

また <msbuildToolsets> は、構成ファイル内で次のように定義する必要があります。<msbuildToolsets> must also be defined in the configuration file, as follows.

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

注意

コードが正しく読み込まれるようにするには、<configSections><configuration> セクション内の最初のサブセクションにする必要があります。To be read correctly, <configSections> must be the first subsection in the <configuration> section.

ToolsetConfigurationSection は、どのような MSBuild ホストでもカスタム構成として使用できるカスタム構成セクションです。ToolsetConfigurationSection is a custom configuration section that can be used by any MSBuild host for custom configuration. カスタム ツールセットを使用した場合、ホストでは、構成ファイル エントリの提供を除き、ビルド エンジンの初期化処理は必要ありません。If you use a custom Toolset, a host does not have to do anything to initialize the build engine except provide the configuration file entries. レジストリにエントリを定義することにより、コンピューター全体を対象としたツールセットを指定して、そのツールセットを MSBuild.exe、Visual StudioVisual Studio、および MSBuild のすべてのホストに適用できます。By defining entries in the registry, you can specify computer-wide Toolsets that apply to MSBuild.exe, Visual StudioVisual Studio, and all hosts of MSBuild.

注意

レジストリに定義済みの ToolsVersion の設定を構成ファイルに定義した場合、2 つの定義はマージされません。If a configuration file defines settings for a ToolsVersion that was already defined in the registry, the two definitions are not merged. 構成ファイル内の定義が優先され、同じ ToolsVersion のレジストリ内の設定は無視されます。The definition in the configuration file takes precedence and the settings in the registry for that ToolsVersion are ignored.

プロジェクトで使用される ToolsVersion 値に固有のプロパティを次に示します。The following properties are specific to the value of ToolsVersion that is used in projects:

  • $(MSBuildBinPath) は、ToolsVersion が定義されているレジストリまたは構成ファイルで指定された ToolsPath 値に設定されます。$(MSBuildBinPath) is set to the ToolsPath value that is specified either in the registry or in the configuration file where the ToolsVersion is defined. レジストリまたは構成ファイルの $(MSBuildToolsPath) 設定は、コア タスクとコア ターゲットの場所を指定します。The $(MSBuildToolsPath) setting in the registry or the configuration file specifies the location of the core tasks and targets. プロジェクト ファイルでは、この設定が $(MSBuildBinPath) プロパティにマップされ、さらに $(MSBuildToolsPath) プロパティにもマップされます。In the project file, this maps to the $(MSBuildBinPath) property, and also to the $(MSBuildToolsPath) property.

  • $(MSBuildToolsPath): このプロパティは予約済みのプロパティであり、構成ファイルで指定されている MSBuildToolsPath プロパティによって提供されます $(MSBuildToolsPath) is a reserved property that is supplied by the MSBuildToolsPath property that is specified in the configuration file. (このプロパティは $(MSBuildBinPath) に代わるものです。(This property replaces $(MSBuildBinPath). ただし、$(MSBuildBinPath) も互換性のために残されています)。カスタム ツールセットでは、$(MSBuildToolsPath) または $(MSBuildBinPath) のいずれか一方を定義してください。両方定義する場合は、これらのプロパティは同じ値になる必要があります。However, $(MSBuildBinPath) is carried forward for compatibility.) A custom toolset must define either $(MSBuildToolsPath) or $(MSBuildBinPath) but not both, unless they both have the same value.

    MSBuildToolsPath プロパティを追加する場合と同じ構文を使用して、ToolsVersion 固有のカスタム プロパティを構成ファイルに追加することもできます。You can also add custom, ToolsVersion-specific properties to the configuration file by using the same syntax that you use to add the MSBuildToolsPath property. このようなカスタム プロパティをプロジェクト ファイルで利用できるようにするには、構成ファイルに指定された値の名前と同じ名前を使用します。To make these custom properties available to the project file, use the same name as the name of the value that is specified in the configuration file. 構成ファイルではツールセットを定義できますが、サブツールセットは定義できません。You may define toolsets but not sub-toolsets in the configuration file.

関連項目See Also

ツールセット (ToolsVersion)Toolset (ToolsVersion)