【问题标题】:Copy the Setup file to a folder named with version number in TFS将安装文件复制到 TFS 中以版本号命名的文件夹
【发布时间】:2017-05-22 09:04:13
【问题描述】:

我们正在使用 TFS 构建,当我在 TFS 构建中构建项目时,它还会创建一个安装文件。

例如,我的应用程序版本是V1.2.3(它来自assembly.cs)安装文件的位置是C:\myproject\setup\setup.exe

我想把这个安装程序复制到下面的文件夹中

C:\products\producta\ V1.2.3

所以我只需要获取版本号来创建一个名为“V1.2.3”的文件夹。对于复制和创建,我可以制作一个批处理文件,但我不知道如何获取版本号。 TFS 有一些变量,例如 Build.SourceVersion 但这些变量并没有给我产品的版本号。

我该怎么做?

【问题讨论】:

  • 为此您必须自己编写脚本。要么在某个时候将它设置为环境变量,然后再使用它(然后你可以通过 tfs 使用它,比如 %versionnumber%),或者你必须编写一个完整的脚本并复制到目标文件夹。
  • @Greaka 谢谢你的回复,有相关文档吗?
  • 我不知道。我们有类似的问题,并通过批处理文件中的call "%datapath%ResHacker.exe" -extract %exepath%, %inputfile%, VERSIONINFO,, || goto :error 解决了
  • @Greaka,使用此命令后,我应该像构建变量一样直接使用 VERSIONINFO 吗?例如 C:\products\producta\ $(VERSIONINFO)
  • 不,这只是调用Reshacker 从我们的 exe 文件中提取版本信息。您必须根据自己的需要进行更改。

标签: tfs versioning setup-project


【解决方案1】:

您必须编写一个脚本来执行此操作。

1) 用于从 assemblyInfo.cs 读取内部版本号的 Powershell 脚本

$myAssemblyVersion = major.minor.patch -> Read from assembyInfo.cs
$versionWithBuildId = '{0}.{1}' -f $myAssemblyVersion, $Env:BUILD_BUILDID

2) 从当前版本更新 TFS 内部版本号

Write-Verbose -verbose "##vso[build.updatebuildnumber]$versionWithBuildId"

之后,您可以使用“复制文件”或“发布工件”步骤。

使用“复制文件”

Target Folder = "C:\products\producta\$(Build.BuildNumber)"

使用“发布工件”

Artifact Name = "$(Build.BuildNumber)"

Path = "C:\products\producta"

【讨论】:

  • 谢谢你的回复,它给了我这个想法,我写了一个脚本来获取版本号并复制到我想要的地方。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-03
  • 2011-02-28
  • 1970-01-01
相关资源
最近更新 更多