1

我目前正在尝试为我的构建的 AfterBuild 事件添加一组命令。命令如下

  1. ..\Binaries\Latest\$(ConfigurationName)\ 中的签出文件
  2. 将构建输出复制到 ..\Binaries\Latest\$(ConfigurationName)\
  3. 将文件签入到 ..\Binaries\Latest\$(ConfigurationName)\

我的项目文件中定义的部分看起来像

  <Target Name="AfterBuild">
    <PropertyGroup>
      <TF>"$(VS100COMNTOOLS)..\IDE\tf.exe"</TF>
    </PropertyGroup>
    <!-- include the Challenges dll and config -->
    <ItemGroup>
      <UtilityDLLs Include="$(OutDir)\*.*" />
    </ItemGroup>    
    <!-- Automticly checkout files -->
    <Exec Condition=" '$(BuildingInsideVisualStudio)' == 'false' " Command="$(TF) checkout /noprompt /recursive $(SolutionDir)..\Binaries\Latest\$(ConfigurationName)\">       
    </Exec>    
    <!-- copy the file to features build output-->
    <Copy Condition=" '$(BuildingInsideVisualStudio)' == 'false' " ContinueOnError="true" OverwriteReadOnlyFiles="true" SourceFiles="@(UtilityDLLs)" DestinationFolder="$(SolutionDir)..\Binaries\Latest\$(ConfigurationName)\" />
    <!-- Automatically checkin files -->
    <Exec Condition=" '$(BuildingInsideVisualStudio)' == 'false' " Command="$(TF) checkin /noprompt /recursive /comment:"COMMENT HERE" $(SolutionDir)..\Binaries\Latest\$(ConfigurationName)\">
    </Exec>    
  </Target>

在我的最后一个命令中,您将看到 /comment 选项:“COMMENT HERE”

我想将“COMMENT HERE”替换为 MSBUILD 或 TFS 属性,该属性包含进行初始签入的开发人员的评论。这是一个选项吗?如果是这样,我该如何做到这一点?

我在Common MSBuild Project Properties中没有找到

细化

在不透露太多信息的情况下,让我详细说明我要完成的工作。我们的 TFS 结构基本上是这样布置的

  • 主干核心
    • 图书馆1
    • 图书馆2
    • 图书馆3
  • 主干网
    • 核心二进制文件
  • 中继API
    • 核心二进制文件

当开发人员签入对 /trunkCore/Library# 的更改时,构建开始,生成的二进制文件会自动签入 /trunkWeb/CoreBinaries 和 /trunkAPI/CoreBinaries。签入是我在 Library1、Library2 和 Library3 csproj 文件中定义的 AfterBuild 配置设置的结果(如上所示)。

初始代码签入和二进制文件签入是两个单独的签入。我想在自动签入的签入说明中引用原始代码签入的注释,而不是使用一些固定文本,例如“二进制文件的自动签入”。在查看 CoreBinaries 目录中的二进制文件历史记录时,这样做会更加清晰。这不是必须的,但绝对会很好。

4

1 回答 1

4

签入和构建不是一对一的。可能没有与手动排队构建相关的签入,也可能没有与计划或滚动构建相关的多个签入。

您将需要添加自定义任务或调用自定义可执行文件,但只要您不使用门控签入(因为签入在技术上直到构建之后才会发生),您应该能够查询所有签入评论并获取您需要的内容。

var changesetSummaries = InformationNodeConverters.GetAssociatedChangesets(IBuildDetail);
foreach(var changesetSummary in changesetSummaries) {
  changesetSummary.Comment....
}
于 2011-11-26T08:42:31.403 回答