程序集以包含文件说明BranchName_Timestamp_Changeset



我希望在构建机器中队列中构建的程序集具有自定义程序集详细信息,这有助于我们跟踪查找错误。例如,我希望程序集的文件描述包含 BranchName_Timestamp.rev_Changeset ex Live_20120301.7_12345

在这篇文章中查看我的答案。基本上,最好的方法是使用 TFS 为源编制索引。它很简单,您可以轻松调试(只要您有 PDB 和 DLL/EXE)

  • 要获取时间垃圾邮件:

http://msbuildtasks.tigris.org/

<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Time" />
<MSBuild.Community.Tasks.Time Format="MM.dd.yyyy.HH.mm">
  <Output TaskParameter="FormattedTime" PropertyName="_time_spam" />
</MSBuild.Community.Tasks.Time>
  • 获取最新的变更集:

https://stackoverflow.com/a/10252772/1268570

  • 获取当前分支的名称:

您可以查看以下链接

http://msdn.microsoft.com/en-us/library/dcbx5yce.aspx

实际上我没有尝试获取当前分支的名称,我们的工作方式是使用标签而不是添加分支的名称,而是添加标签的名称,每次发布新版本时都会进行标记,如果您对这种方法感兴趣,我在 NCastor AutoBuilder 中构建了此功能(我计划在大约一周内发布):

https://github.com/jupaol/NCastor/tree/develop/Solutions/NCastor.AutoBuilder/NCastor.AutoBuilder.Runner/Targets/Labels

把所有放在一起:

<PropertyGroup>
  <InformationalVersion>$(SemanticVersion) $(BranchName)_$(_time_spam).rev_$(TFSRevisionVersion)</InformationalVersion>
</PropertyGroup>
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.AssemblyInfo" />
<MSBuild.Community.tasks.AssemblyInfo OutputFile="$(AssemblyVersionFilePath)"
          CodeLanguage="C#"
          AssemblyFileVersion="$(FileVersion)"
          AssemblyInformationalVersion="$(InformationalVersion)"
          AssemblyVersion="$(SemanticVersion)" />

最新更新