【问题标题】:TeamCity's AssemblyInfo patcher's number formatTeamCity 的 AssemblyInfo 修补程序的数字格式
【发布时间】:2011-07-26 14:46:19
【问题描述】:

我曾经让 TeamCity + WiX + MSBuild 社区任务工作。现在我已经升级到 WiX 3.5,我不记得我是如何配置它的了。 :) 当我浏览 TeamCity 时,我遇到了“AssemblyInfo Patcher”。我想,“太好了!这将使我的生活更轻松!”。我使用%build.vcs.number.1% 作为格式并构建了我的安装程序。

虽然修补程序确实提取了 vcs 编号,但它使用它作为版本中的主要编号。所以不是1.0.0.xxxx,而是版本xxxx.0.0.0

我浏览了 JetBrain 的文档站点,但没有找到任何与将其更改为更合适的设置相关的内容。我还寻找了正则表达式支持,但没有找到任何东西。

谁能提出一个好的解决方案,还是我应该回到尝试配置我原来的工具集?

【问题讨论】:

  • 在版本控制中使用您的 vcs 编号时要小心。即使有些东西声称忽略了第 4 个字段,但如果数字太高,其他东西也会中断(例如 msp 修补)。我在 32768 附近看到了问题。
  • @Dave 感谢您的评论,我必须记住这一点。

标签: wix teamcity wix3.5 msbuildcommunitytasks


【解决方案1】:

程序集信息修补程序一次只修补完整的版本字符串。但是系统变量 build.number 可以从构建配置的“通用”页面生成,像这样:

当您将 %build.number% 指定为您的 AssemblyInfo 版本时,它将从您的常规设置页面中获取组合编号。

【讨论】:

  • 谢谢,我试试看。我已经有了使用 WiX 的解决方案,但如果可行,我一定会将其标记为答案!
  • 我试过这个。因为它,我的一半测试开始失败。
【解决方案2】:

尝试在格式中包含完整的预期版本号:

1.0.0.%build.vcs.number.1%

【讨论】:

  • 我曾考虑过这一点,但当我将 AssemblyInfo.cs 更改为 2.0.0.0 并希望 TeamCity 将版本号设为 2.0.0.yyyy 时,该解决方案将很快失效。
  • 您是否有理由不使用 TeamCity 构建配置的“内部版本号格式”设置来规定这一点?您可能希望能够看到与程序集中显示的相同版本。我的建议是将“内部版本号格式”设置为“1.0.0.%build.vcs.number.1%”(您可以在版本号更改时更改此设置)。然后,程序集版本格式将仅基于内部版本号 (%system.build.number%)。
  • 这是因为 IMO 内部版本号应该与正在积极开发的源代码相关联。如果我们需要修改次要版本号,那么我们应该在项目中进行,而不是要求有人登录 TeamCity 服务器并在那里更改版本。
  • 您可以在源代码控制中的文件中维护版本号 - 将其读出并使用 TeamCity 的服务消息扩展点进行回显:confluence.jetbrains.net/display/TCD65/…
  • 嗨!我不清楚如何利用这个技巧来拥有一个包含主要版本的文件,阅读它,并用“TC Service Message Extensibility”来回显它,它具有正确的格式,会导致 TC 的价值发生变化。这篇文章有帮助; stackoverflow.com/a/8898060/242110
【解决方案3】:

嗯,还没有看到 AssemblyInfo Patcher,但您可以使用 MsBuild 和 Regex 手动完成:

http://jonalb.com/post/2010/10/04/Automatic-Versioning-using-TeamCity-an-MSBuild.aspx

【讨论】:

  • 谢谢,但我的问题是专门尝试确定是否可以仅使用 AssemblyInfo Patcher 执行我想要的操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-18
相关资源
最近更新 更多