标准和自定义工具集配置

MSBuild 工具集包含任务、可以使用生成应用程序项目的目标和工具。MSBuild 包括标准工具集,但是,您还可以创建自定义工具集。有关如何指定工具集的更多信息,请参见 MSBuild 工具集 (ToolsVersion)

标准工具集配置

MSBuild 4.5 包括下列标准工具集:

ToolsVersion

工具集路径 (在 MSBuildToolsPath 或 MSBuildBinPath 生成中指定特性)

2.0

Windows 安装路径\Microsoft.Net\Framework\v2.0.50727\

3.5

Windows 安装路径\Microsoft.NET\Framework\v3.5.20223\

4.0

Windows 安装路径\Microsoft.NET\Framework\v4.0.30319\

ToolsVersion 值确定 Visual Studio 生成的项目使用哪个工具集。您指定 ToolsVersion 作为属性在项目文件中 项目 元素,但是,您可以重写该属性使用 /toolsversion 切换到命令提示。有关此属性的信息,此开关和其他方式指定 ToolsVersion,请参见 重写 ToolsVersion 设置

如果 ToolsVersion 未指定,以下关键定义 ToolsVersion。

注册表配置单元

键名

字符串键值

\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\3.5\

DefaultToolsVersion

2.0

\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\4.0\

DefaultToolsVersion

2.0

以下注册表项指定的 .NET Framework 版本安装路径与每个 ToolsVersion。安装路径还指定 MSBuild.exe 的位置,定义工具集信息。

注册表配置单元

键名

字符串键值

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

MSBuildToolsPath

.NET Framework 2.0 安装路径

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

MSBuildToolsPath

.NET Framework 3.5 安装路径

\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0\

MSBuildToolsPath

.NET Framework 4 安装路径

Bb397428.collapse_all(zh-cn,VS.110).gif子工具集

如果注册表项上表中有一个子级,MSBuild 使用它确定包含多个工具子工具集的路径。以下子项是一个示例:

\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0\11.0

VisualStudioVersion 生成属性指示子工具集是否变为活动状态。例如,VisualStudioVersion 值“11.0”指定 .NET Framework 4.5 子工具集。有关更多信息,请参见 MSBuild 工具集 (ToolsVersion)的子工具集部分。

说明说明

建议您避免在更改这些设置。但是,在中,如下一节所述,您可以添加自己的设置和定义计算机自定义工具集定义。

自定义工具集定义

当标准的工具集不能满足您的生成要求时,您可以创建自定义工具集。例如,您可能必须具有生成的 Visual C++ 项目的一个单独的系统的编译实验室。使用自定义工具集,那么,当您创建项目或运行 MSBuild.exe 时,可以进行自定义值传递给 ToolsVersion 属性。这样,也可以使用 $(MSBuildToolsPath) 属性从该目录导入 .targets 文件。

指定自定义工具集在 MSBuild.exe 的配置文件或承载 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>,如下所示。

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

为了能正确读取,<configSections> 必须位于 <configuration> 部分的第一小节。

ToolsetConfigurationSection 是一个可由自定义配置的任意宿主使用的自定义配置节。如果使用自定义工具集,则宿主除了提供配置文件项外,无需再执行任何其他操作便可初始化生成引擎。通过在注册表中定义这些项,您可以指定计算机范围内的、适用于 MSBuild.exe、Visual Studio 及所有 MSBuild 宿主的工具集。

说明说明

如果在注册表中定义的配置文件定义 ToolsVersion 的设置,两个定义并不会合并。在配置文件中定义优先,并在注册表中设置该 ToolsVersion 的被忽略。

下列属性特定于项目 ToolsVersion 的值:

  • $ (msbuildbinpath) 设置为指定在注册表或配置文件 ToolsVersion 定义的 ToolsPath 值。设置注册表或配置文件的 $(MSBuildToolsPath) 指定工具集的位置。在项目文件中,此值映射到 $(MSBuildBinPath) 属性和 $(MSBuildToolsPath) 属性。

  • $ (msbuildtoolspath) 是 MSBuildToolsPath 属性提供在配置文件中指定一个保留属性。(此属性取代了 $(MSBuildBinPath)。但是,$(MSBuildBinPath) 是为实现向前兼容性而承载的。)

您还可以使用添加 MSBuildToolsPath 属性时所用的语法在配置文件中添加特定于 ToolsVersion 的自定义属性。若要让这些自定义特性可用项目文件,请使用名称以及在配置文件中指定值相同的名称。

请参见

概念

MSBuild 工具集 (ToolsVersion)