首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算构建的TFS 2015版本的变化集?

如何计算构建的TFS 2015版本的变化集?
EN

Stack Overflow用户
提问于 2017-03-31 18:27:39
回答 3查看 721关注 0票数 1

我只分发由我的TFS构建定义之一构建的二进制文件,并且每个构建都收到一个唯一的版本号($yy$ only .$rev)。生成名称的名称包含此版本号。版本号由PowerShell脚本设置为程序集版本和二进制文件版本。我只有60天的构建结果(包括在我的drop文件夹中构建的二进制文件),现在我想知道:我如何才能计算出某个版本号,这个版本号有一年的历史,可以更改它的生成,这样我就可以查看源代码或者重新构建二进制文件了吗?我是否必须在构建过程中显式地添加变更集信息?是否必须在生成期间设置的版本号中对更改集编号进行编码?这两种想法似乎都不太灵巧。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-04 18:52:24

最后,我想出了一个PowerShell脚本,我将其钩入到构建定义中,作为一个额外的构建步骤,该步骤与建议的这里类似,该步骤在所有AssemblyInfo.cs文件中设置版本属性:

代码语言:javascript
复制
$systDefinitionId = $env:SYSTEM_DEFINITIONID
$buildDefVersion = $env:BUILD_DEFINITIONVERSION
$buildDefName = $env:BUILD_DEFINITIONNAME
$buildSourceVersion = $env:BUILD_SOURCEVERSION
$buildSourceBranch = $env:BUILD_SOURCEBRANCH

$SrcPath = $env:BUILD_SOURCESDIRECTORY
$AllVersionFiles = Get-ChildItem $SrcPath AssemblyInfo.cs -recurse
$AllVersionFilesCount = ($AllVersionFiles | Measure-Object).Count

Write-Verbose "Updating $AllVersionFilesCount AssemblyInfo.cs files in path ""$SrcPath"" with source information."  -Verbose

Write-Verbose "ID of build definition:      $systDefinitionId" -Verbose
Write-Verbose "Version of build definition: $buildDefVersion" -Verbose
Write-Verbose "Name of build definition:    $buildDefName" -Verbose
Write-Verbose "Changeset to build:          $buildSourceVersion" -Verbose
Write-Verbose "Branch to build from:        $buildSourceBranch" -Verbose

foreach ($file in $AllVersionFiles)
{
(Get-Content $file.FullName) |
    %{$_ -replace 'AssemblyProduct\(""\)', "AssemblyProduct(""$buildDefName / $buildSourceVersion"")" } |
    %{$_ -replace 'AssemblySourceBranch\(""\)', "AssemblySourceBranch(@""$buildSourceBranch"")" } |
    %{$_ -replace 'AssemblySourceChangeset\(0\)', "AssemblySourceChangeset($buildSourceVersion)" } |
    %{$_ -replace 'AssemblyBuild\(""\)', "AssemblyBuild(@""$buildDefName / ID: $systDefinitionId / Version: $buildDefVersion"")" } |
Set-Content $file.FullName -Force
}

我正在修改AssemblyProduct属性,将用于创建二进制文件的构建定义名称和变更集写入其中。稍后,此信息在Windows的“详细信息”选项卡中的exe或dll属性上可见。

此外,我还定义了自定义属性AssemblySourceBranchAssemblySourceChangesetAssemblyBuild,以提供更详细的信息。它们都具有相同的结构,因此为了简洁起见,只使用AssemblySourceChangeset的源代码。

代码语言:javascript
复制
[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = false)]
public class AssemblySourceChangesetAttribute : Attribute
{
  public AssemblySourceChangesetAttribute(uint changeset)
  {
    Changeset = changeset;
  }

  public uint Changeset { get; }
}

如果“公共”可见产品字段中的信息不足以重建二进制文件,则仍然可以对exe或dll进行反思,并读取那些在源分支、id和版本中存储的自定义属性。

票数 2
EN

Stack Overflow用户

发布于 2017-04-03 03:17:53

您可以添加一个powershell脚本或扩展任务,它将生成发行说明作为TFS vNext构建的一部分。您将得到如下内容:

然后您可以存储它,因为源代码看一下这个博客

票数 1
EN

Stack Overflow用户

发布于 2017-04-03 13:52:38

前言: XAML构建。

您可以通过创建发布/修复分支以及具有特定于这些分支的构建定义来了解所有构建产品。很容易将构建克隆到分支,并使用版本号作为二进制邮票的一部分。我更喜欢使用分支版本号方法,并使用该版本号为我的二进制文件盖章。只要您为每个分支中的二进制文件创建唯一的构建定义,您就可以轻松地查看过去的构建,并确切地看到您需要的与it.All关联的变更集是二进制文件的版本号,并且您可以轻松地将其追溯到源代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43147361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档