TeamCity - AssemblyInfo Patcher中的动态参数

时间:2015-01-15 21:05:50

标签: teamcity

我有一个具有自定义构建步骤的构建,该构建步骤从存储库中读取文本文件并写入build.version配置参数。我尝试在AssemblyInfo修补程序中使用该值,如下所示:%build.version%。%system.build.number%。

构建因类似于以下错误而失败:

  

错误CS0647:错误发出' System.Reflection.AssemblyVersionAttribute'属性 - '指定的版本' .26'无效'

构建运行后,我可以在Parameters选项卡中看到build.version设置为正确的值。

我在这里做错了还是有更好的方法来实现这个目标?

更新: 我现在在构建日志中看到AssemblyInfo修补程序在我设置值的第一个构建步骤之前运行。有没有办法将它推迟到第一个构建步骤之后?

3 个答案:

答案 0 :(得分:2)

在TeamCity内部似乎没有解决方法。它始终在第一个构建步骤之前运行AssemblyInfo修补程序。

我最终使用Rake和Albacore来解决这个问题来编写我的构建脚本。这允许我自己设置我的版本,并且还有一个很好的副作用,允许我在TeamCity中运行之前测试我的构建。

答案 1 :(得分:0)

来自TeamCity documentation

  

配置参数(无前缀)未传递到构建,仅用于在构建配置中共享设置。它们是自定义基于模板或使用元运行程序的构建配置的主要方法。

相反,您应该使用系统属性(在“构建参数”选项卡上定义)。您甚至可以将config参数作为值提供给系统属性。

答案 2 :(得分:0)

另一种选择是在单独的父构建中生成动态构建号,然后通过快照依赖性使用该构建号。将子项的内部版本号设置为%dep.PARENT_BUILD_ID.build.number%。这样,在AssemblyInfo Patcher运行时已经定义了内部版本号。有关详细信息,请参阅https://stackoverflow.com/a/35095917/1130636