如何清除 TFS 中的 "changed" 状态以用于构建计划或更改变更集时间?

How to clear "changed" state in TFS for build schedule or change changeset time?

我们为项目配置了 MSBuild 脚本自定义,以修改项目中的 ApplicationVersion 属性 并在项目构建时将其复制到 AssemblyInfo.cs 文件中。问题是我们将 TFS 设置为每晚 运行,"Build even if nothing has changed since the previous build" 未选中 。但由于 TFS 本身正在生成此版本更新,因此它会在每晚重建和递增。所以这有点像我们自己设计的无限循环,但试图弄清楚如何摆脱它。

如果 "changed since the previous build" 检测基于历史时间戳,理想情况下,当版本更新并提交给 TFS 时,它使用构建时间之前的时间戳来执行它会很好。这可能吗?

如果 "changed since the previous build" 检测是基于某些 boolean/bit 标志,有没有办法重置它?

使用 TFS 2012。

我假设您在 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。