创建自定义工具集配置
MSBuild 工具集包含对可用来生成应用程序项目的任务、目标和工具的引用。 MSBuild 包括标准工具集,但也可以创建自定义工具集。
标准工具集配置
MSBuild 包含引用 MSBuild 当前版本的标准工具集 Current
,该版本安装在 Visual Studio 安装目录下的文件夹 MSBuild\Current\Bin 中。
自定义工具集定义
当标准工具集不满足生成要求时,可以创建自定义 Toolset
。 例如,你可能有一套生成实验室方案,方案中必须有一个单独的系统用于生成 C++ 项目。 通过使用自定义 Toolset
,可以在使用 /toolsVersion
命令行开关运行 MSBuild.exe 时为 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>
注意
若要正确读取,<configSections>
必须是 <configuration>
部分中的第一个子节。
ToolsetConfigurationSection
是一个可供任意 MSBuild 主机用于自定义配置的自定义配置部分。 如果使用自定义工具集,则主机除了提供配置文件项外,无需再执行任何其他操作便可初始化生成引擎。
下列属性特定于项目中所用的 ToolsVersion
的值:
$(MSBuildBinPath) 设置为
ToolsPath
值,该值在定义ToolsVersion
的注册表或配置文件中指定。 注册表或配置文件中的$(MSBuildToolsPath)
设置指定核心任务和目标的位置。 在项目文件中,此值映射到 $(MSBuildBinPath) 属性和 $(MSBuildToolsPath) 属性。$(MSBuildToolsPath)
是一个由在配置文件中指定的 MSBuildToolsPath 属性提供的保留属性。 (此属性取代$(MSBuildBinPath)
。但是,$(MSBuildBinPath)
的目的是实现兼容性。)自定义工具集必须定义$(MSBuildToolsPath)
或$(MSBuildBinPath)
,但不能同时定义二者,除非它们具有相同的值。还可以使用添加 MSBuildToolsPath 属性时所用的语法向配置文件添加特定于 ToolsVersion 的自定义属性。 如果要使这些自定义属性可在项目文件中使用,请使用与配置文件中指定的值相同的名称。 可以在配置文件中定义工具集但不能定义子工具集。