自定义 SolutionToBuild 项组
可以通过将属性和目标传递到 SolutionToBuild 项组中的生成来自定义 Team Foundation Build 项目文件 TFSBuild.proj。 您还可以在 SolutionToBuild 项组的生成中添加或移除解决方案。 有关 TFSBuild.proj 文件的更多信息,请参见了解 Team Foundation Build 配置文件。
所需权限
若要完成这些过程,您必须将**“签入”和“签出”权限都设置为“允许”**。
编辑 Team Foundation Build 项目文件
在编辑 TFSBuild.proj 文件之前,需要将该文件从源代码管理中签出。
编辑 TFSBuild.proj 文件
在**“视图”菜单上指向“其他窗口”,然后单击“源代码管理资源管理器”**。
在源代码管理资源管理器中,在**“文件夹”窗格中展开团队项目,再选择“TeamBuildTypes”**。
若要获取 TFSBuild.proj 的最新版本,请右击**“TeamBuildType”文件夹,然后单击“获取最新版本”**。
此操作将可用文件签出以对其进行编辑。
在查看窗格上双击要修改的生成定义名称,然后右击 TFSBuild.proj,再单击**“签出以进行编辑”。 在“签出”对话框中,选择“无 - 允许共享的签出”,再单击“签出”**。
一个红色的复选标记会出现在 TFSBuild.proj 文件的旁边,指示其源代码管理状态。
双击 TFSBuild.proj 文件在 Visual Studio XML 编辑器中将其打开。
在 SolutionToBuild 项组中传递属性
Team Foundation Build 包含两个保留属性,可以使用这两个属性来自定义生成定义:
当 Team Foundation Build 调用 Clean 目标时,CustomPropertiesForClean 会将自定义值传递给每个解决方案。
当 Team Foundation Build 调用其默认目标(通常为 Build)时,CustomPropertiesForBuild 会将自定义值传递给每个解决方案。
在 SolutionToBuild 项组中传递属性
在 TFSBuild.proj 文件中找到 <SolutionToBuild> 标记。
若要为默认目标添加自定义属性,请在 <SolutionToBuild> 和 </SolutionToBuild> 标记之间键入下列内容。 例如:
<SolutionToBuild Include="$(SolutionRoot)\HelloWorld.sln"> <CustomPropertiesForBuild> Context=TeamBuild;RootDirectory=$(SolutionDir) </CustomPropertiesForBuild> </SolutionToBuild>
此 XML 将使生成属性 RootDirectory 指向默认的 SolutionDir 属性。
使用与此相同的语法在 CustomPropertiesForClean 属性中传递自定义属性。
(可选)您可以通过在元数据中指定自定义属性来将这些属性传递给各个 SolutionToBuild 项。
例如:
<SolutionToBuild Include="$(SolutionRoot)\HelloWorld.sln"> <Properties> OutDir=$(BinariesRoot)\$(Solution)\$(Platform)\$(Configuration) </Properties> </SolutionToBuild>
此 XML 可以为与该 TFSBuild.proj 文件相关联的一个或多个生成定义指定输出目录。
提示
添加 CustomPropertiesForBuild 和 CustomPropertiesForClean 标记会在 Visual Studio 中生成 XML 架构验证警告。 您可以放心地忽略这些警告。
在 SolutionToBuild 项组中添加和删除解决方案
您可以编辑 SolutionToBuild 项组来添加或移除解决方案,这些解决方案将通过与 Team Foundation Build 项目文件 TFSBuild.proj 相关联的生成定义来生成。
添加或移除要生成的解决方案
在 TFSBuild.proj 文件中找到 <SolutionToBuild> 标记。
如果将生成定义设置为仅生成一个解决方案,则 SolutionToBuild 项将与以下 XML 类似:
<ItemGroup> <SolutionToBuild Include="$(BuildProjectFolderPath)\path\MySolution.sln"> <Targets></Targets> <Properties></Properties> </SolutionToBuild> </ItemGroup>
若要添加另一个解决方案,请在起始 <ItemGroup> 标记之后、结束 </ItemGroup> 标记之前,添加另一组 <SolutionToBuild></SolutionToBuild> 标记。
<SolutionToBuild Include="$(BuildProjectFolderPath)\path\MySolution.sln"> <Targets></Targets> <Properties></Properties> </SolutionToBuild> <SolutionToBuild Include="$(BuildProjectFolderPath)\path\MySecondSolution.sln"> <Targets></Targets> <Properties></Properties> </SolutionToBuild>
若要移除解决方案,请移除 <SolutionToBuild></SolutionToBuild> 标记,以及不再想生成的解决方案的标记之间的所有内容。
在 SolutionToBuild 项组中调用自定义目标
您可以通过在元数据中指定自定义目标来为个别的 SolutionToBuild 项调用这些目标。
在 SolutionToBuild 项组中调用自定义目标
在 TFSBuild.proj 文件中找到 <SolutionToBuild> 标记。
使用以下语法来调用目标并传递属性。
<SolutionToBuild Include="$(BuildProjectFolderPath)\path\MySolution.sln"> <Targets>MyCustomTarget1;MyCustomTarget2</Targets> <Properties>Property1=Value1;PropertyTwo=Value2</Properties> </SolutionToBuild>
此 XML 将调用目标 MyCustomTarget1 和 MyCustomTarget2,并传递属性 Property1 和 Property2。