【问题标题】:How to clear "changed" state in TFS for build schedule or change changeset time?如何清除 TFS 中的“已更改”状态以进行构建计划或更改变更集时间?
【发布时间】:2015-07-15 17:12:19
【问题描述】:

我们为项目配置了 MSBuild 脚本自定义,以修改项目中的 ApplicationVersion 属性,并在项目构建时将其复制到 AssemblyInfo.cs 文件中。问题是我们将 TFS 设置为每晚运行,“即使自上一次构建以来没有任何变化也构建”未选中。但由于 TFS 本身正在生成此版本更新,因此它将每晚重建和递增。所以这有点像我们自己设计的无限循环,但试图弄清楚如何摆脱它。

如果“自上次构建以来已更改”检测是基于历史时间戳,理想情况下,如果版本更新并提交到 TFS 时,它会使用构建时间之前的时间戳来执行此操作。这可能吗?

如果“自上次构建以来已更改”检测是基于一些布尔/位标志,有没有办法重置它?

使用 TFS 2012。

【问题讨论】:

    标签: tfs msbuild


    【解决方案1】:

    我假设您正在检查新版本的 assemblyinfo.cs 更新后,这就是 TFS 排队新版本的原因。您是否尝试在***NO_CI*** 的签入中添加评论这肯定会抑制 CI 构建,但我不能 100% 确定它是否适用于您的场景。

    另一种选择是通过算法生成版本号,而不是仅仅增加一个计数器并将其重新检入版本控制。这规避了触发新构建的问题

    即,如果您的版本号看起来像 1.2.3.4

    其中 1 是 Major(由人工而非构建过程修改)

    2 是次要的(也被人修改过)

    最后 2 位数字随后会通过自动化流程进行更新。

    您可以将自 2000 年 1 月以来的天数用于第 3 位(任意数字,但每天都会发生变化)以及版本控制中的最新变更集编号或 TFS 执行的构建总数用于第 4 位.

    这将满足两个要求,即版本号对于给定的程序集构建是唯一的,它们总是会上升。

    【讨论】:

      【解决方案2】:

      我建议您不要将新版本号签入 TFS。有版本号没有任何价值。

      我通常将签入的程序集信息编号设置为全零。 ( 0.0.0.0) 并且从不更新它们,除非在本地进行构建。

      这使您始终能够识别本地构建的 DLL。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-03
        • 1970-01-01
        • 2015-03-19
        • 1970-01-01
        • 2020-10-09
        • 2016-10-09
        • 2015-04-30
        相关资源
        最近更新 更多