代码之家  ›  专栏  ›  技术社区  ›  Maxime Rouiller

如何在Visual Studio生成过程中显示“步骤”?

  •  7
  • Maxime Rouiller  · 技术社区  · 16 年前

    当您从Visual Studio(2008或2005)监视TFS构建时,您可以看到它的发展方向。

    问题是我有一些构建后的自定义步骤,我希望开发人员能够通过UI直接看到这些步骤。这些步骤需要花费一些时间,我们还可以获得构建步骤的“时间”。

    知道怎么展示吗?

    2 回复  |  直到 16 年前
        1
  •  9
  •   Martin Woodward    16 年前

    这是我通常用于向TFS 2008中的生成报告添加步骤的模式。(见 http://code.msdn.microsoft.com/buildwallboard/ 对于我通常在团队构建对话中使用的完整示例)

    基本上,神奇的是在TFS2008中有一个定制的任务,叫做“buildstep”。以下是生成和MSI安装程序并在报告中构建适当构建步骤的部分:

      <Target Name="PackageBinaries">
    
        <!-- create the build step -->
        <BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
                   BuildUri="$(BuildUri)"
                   Message="Creating Installer"
                   Condition=" '$(IsDesktopBuild)' != 'true' " >
          <Output TaskParameter="Id"
                  PropertyName="InstallerStepId" />
        </BuildStep>
    
        <!-- Create the MSI file using WiX -->
        <MSBuild Projects="$(SolutionRoot)\SetupProject\wallboard.wixproj"
      Properties="BinariesSource=$(OutDir);PublishDir=$(BinariesRoot);Configuration=%(ConfigurationToBuild.FlavourToBuild)" >
        </MSBuild>
    
        <!-- If we sucessfully built the installer, tell TFS -->
        <BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
                   BuildUri="$(BuildUri)"
                   Id="$(InstallerStepId)"
                   Status="Succeeded"
                   Condition=" '$(IsDesktopBuild)' != 'true' " />
    
        <!-- Note that the condition above means that we do not talk to TFS when doing a Desktop Build -->
    
        <!-- If we error during this step, then tell TFS we failed-->
        <OnError   ExecuteTargets="MarkInstallerFailed" />
      </Target>
    
      <Target Name="MarkInstallerFailed">
        <!-- Called by the PackageBinaries method if creating the installer fails -->
        <BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
                   BuildUri="$(BuildUri)"
                   Id="$(InstallerStepId)"
                   Status="Failed"
                   Condition=" '$(IsDesktopBuild)' != 'true' " />
      </Target>
    

    因此,首先,我创建构建步骤,并将步骤的ID保存在名为InstallerStepID的属性中。完成任务后,我将该步骤的状态设置为“成功”。如果在步骤中发生任何错误,那么我将该步骤的状态设置为“失败”。

    祝你好运,

    马丁。

        2
  •  0
  •   Polyfun MicBehrens    13 年前

    请注意,在@martin woodward的伟大例子中,packagebinaries是现有的 TFS build targets . 如果要使用自己的目标,可以使用 CallTarget 从已知目标调用它们的任务,例如,

    <Target Name="AfterDropBuild">
        <CallTarget Targets="CreateDelivery"/>
        <CallTarget Targets="CreateInventory"/>
    </Target>
    

    然后在您的目标(例如,CreateDelivery)中,根据Martin的示例使用buildStep任务。