自定义 SolutionToBuild 项组

可以通过将属性和目标传递到 SolutionToBuild 项组中的生成来自定义 Team Foundation Build 项目文件 TFSBuild.proj。 您还可以在 SolutionToBuild 项组的生成中添加或移除解决方案。 有关 TFSBuild.proj 文件的更多信息,请参见了解 Team Foundation Build 配置文件

所需权限

若要完成这些过程,您必须将**“签入”“签出”权限都设置为“允许”**。

编辑 Team Foundation Build 项目文件

在编辑 TFSBuild.proj 文件之前,需要将该文件从源代码管理中签出。

编辑 TFSBuild.proj 文件

  1. 在**“视图”菜单上指向“其他窗口”,然后单击“源代码管理资源管理器”**。

  2. 在源代码管理资源管理器中,在**“文件夹”窗格中展开团队项目,再选择“TeamBuildTypes”**。

  3. 若要获取 TFSBuild.proj 的最新版本,请右击**“TeamBuildType”文件夹,然后单击“获取最新版本”**。

    此操作将可用文件签出以对其进行编辑。

  4. 在查看窗格上双击要修改的生成定义名称,然后右击 TFSBuild.proj,再单击**“签出以进行编辑”。 在“签出”对话框中,选择“无 - 允许共享的签出”,再单击“签出”**。

    一个红色的复选标记会出现在 TFSBuild.proj 文件的旁边,指示其源代码管理状态。

  5. 双击 TFSBuild.proj 文件在 Visual Studio XML 编辑器中将其打开。

在 SolutionToBuild 项组中传递属性

Team Foundation Build 包含两个保留属性,可以使用这两个属性来自定义生成定义:

  • 当 Team Foundation Build 调用 Clean 目标时,CustomPropertiesForClean 会将自定义值传递给每个解决方案。

  • 当 Team Foundation Build 调用其默认目标(通常为 Build)时,CustomPropertiesForBuild 会将自定义值传递给每个解决方案。

在 SolutionToBuild 项组中传递属性

  1. 在 TFSBuild.proj 文件中找到 <SolutionToBuild> 标记。

  2. 若要为默认目标添加自定义属性,请在 <SolutionToBuild> 和 </SolutionToBuild> 标记之间键入下列内容。 例如:

    <SolutionToBuild Include="$(SolutionRoot)\HelloWorld.sln">
      <CustomPropertiesForBuild>
        Context=TeamBuild;RootDirectory=$(SolutionDir)
      </CustomPropertiesForBuild>
    </SolutionToBuild>
    

    此 XML 将使生成属性 RootDirectory 指向默认的 SolutionDir 属性。

    使用与此相同的语法在 CustomPropertiesForClean 属性中传递自定义属性。

  3. (可选)您可以通过在元数据中指定自定义属性来将这些属性传递给各个 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 相关联的生成定义来生成。

添加或移除要生成的解决方案

  1. 在 TFSBuild.proj 文件中找到 <SolutionToBuild> 标记。

    如果将生成定义设置为仅生成一个解决方案,则 SolutionToBuild 项将与以下 XML 类似:

    <ItemGroup>
    <SolutionToBuild Include="$(BuildProjectFolderPath)\path\MySolution.sln">
      <Targets></Targets>
      <Properties></Properties>
    </SolutionToBuild>
    </ItemGroup>
    
  2. 若要添加另一个解决方案,请在起始 <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>
    
  3. 若要移除解决方案,请移除 <SolutionToBuild></SolutionToBuild> 标记,以及不再想生成的解决方案的标记之间的所有内容。

在 SolutionToBuild 项组中调用自定义目标

您可以通过在元数据中指定自定义目标来为个别的 SolutionToBuild 项调用这些目标。

在 SolutionToBuild 项组中调用自定义目标

  1. 在 TFSBuild.proj 文件中找到 <SolutionToBuild> 标记。

  2. 使用以下语法来调用目标并传递属性。

    <SolutionToBuild Include="$(BuildProjectFolderPath)\path\MySolution.sln">
      <Targets>MyCustomTarget1;MyCustomTarget2</Targets>
      <Properties>Property1=Value1;PropertyTwo=Value2</Properties>
    </SolutionToBuild>
    

    此 XML 将调用目标 MyCustomTarget1 和 MyCustomTarget2,并传递属性 Property1 和 Property2。

请参见

任务

创建基本生成定义

其他资源

Team Foundation Build 目标、任务和属性