Teamcity 9:如何将git短哈希添加到程序集信息修补程序中

Teamcity 9:如何将git短哈希添加到程序集信息修补程序中,git,teamcity,teamcity-9.0,Git,Teamcity,Teamcity 9.0,我正在尝试使用assembly info patcher创建一个版本号,例如: 1.2.3.1a3c19e 其中最后一位是git短散列 我尝试使用powershell脚本构建步骤创建短哈希(因为我找不到包含它的变量),并将其添加到系统变量,但此构建步骤似乎在程序集信息修补程序之后运行,因此没有多大用处。如果您是指.NET程序集,那么您将无法使用git的短哈希作为修订号,因为它只接受数字。您可以自己检查并将上面的版本设置为AssemblyVersion。我打赌你的应用程序不会被编译。相反,您可以使

我正在尝试使用assembly info patcher创建一个版本号,例如:

1.2.3.1a3c19e

其中最后一位是git短散列


我尝试使用powershell脚本构建步骤创建短哈希(因为我找不到包含它的变量),并将其添加到系统变量,但此构建步骤似乎在程序集信息修补程序之后运行,因此没有多大用处。

如果您是指.NET程序集,那么您将无法使用git的短哈希作为修订号,因为它只接受数字。您可以自己检查并将上面的版本设置为AssemblyVersion。我打赌你的应用程序不会被编译。相反,您可以使用teamcity的%build.counter%变量作为修订号

如果要将其写入程序集信息字段,可以这样做,但需要单独的生成配置来生成生成生成编号。此步骤的唯一目的是创建附加了哈希的内部版本号

1。创建生成配置以生成短散列

2。添加生成哈希的步骤

3。添加一个参数以存储哈希值

4。添加第二个生成配置并向第一个生成配置添加依赖项

5。您现在可以使用从属步骤中的参数

6。此时,您可以在部件信息修补程序中使用它

另一种方法是使用VCS标记构建功能将构建编号写回Git


希望这能有所帮助。

您确实无法将此哈希写入某些字段。我假设这里的目标是将程序集版本绑定到git提交,在这种情况下,sens将写入程序集信息版本,因为它接受一个字符串。只需添加分离的生成配置,因为程序集信息修补程序是在收集VCS的更改之后和开始执行步骤之前运行的。对于上面的示例,有一种方法可以通过使用powershell脚本摆脱单独的构建配置,该脚本遍历所有AssemblyInfo.cs文件并进行替换,而不是使用AssemblyInfo修补程序:
(get childitem-include AssemblyInfo.cs-recurse)| Foreach对象{Set Content-Encoding UTF8$(get Content$)-replace“1.0.0.0”、“1.0.0-%GitShortHash%”中)
@Alexey。我同意您可以在powershell中编写一个脚本来完成此操作,但我会非常小心将此代码放入,因为它更可能破坏生成。默认情况下,AssemblyInfo.cs包含AssemblyVersion和AssemblyFileVersion,如果使用短哈希,则无法编译。AssemblyInfo.cs需要一些“准备”“首先,此脚本不破坏生成。@DevOps,您的正确率为100%。我留下了我的评论和脚本示例,只是为了说明,不添加另一个构建配置就可以完成这项工作。由于许可证限制,smbd可能会遇到问题。我发布的powershell脚本必须更新,以便仅替换所需属性的版本。PS变量如何/何时进入步骤3中的
GitShortHash
参数,因为您将该值保留为空?步骤3中的参数是否需要是环境变量、配置参数或系统属性才能获取值?即使生成日志显示
##teamcity[setParameter name='GitShortHash']
,我的始终为空。