3

我们正在考虑将自动版本控制添加到由 Team Foundation Server 开发和自动构建的本机 c++ 项目中。理想情况下,我们将开始构建(从 TFS 检查所有最新版本),然后作为第一步,从 TFS 获取构建号,创建一个头文件,然后在继续构建之前将该文件重新检入。这甚至可以在这样的构建期间进行结帐/签入吗?

我不太熟悉 TFS 的工作原理以及从中检索信息的功能,我们团队中的其他任何人也不太熟悉,这是我们第一次使用它......

4

3 回答 3

3

是的,你可以。这是一个很棒的网站,展示了如何为 AssemblyInfo 的 C# 执行此操作,因此您必须稍微调整解决方案,但它应该足以让您完成任务。

在大容量构建环境中签出/签入要非常小心。您将倾向于得到很多“无法签出已锁定的文件”,并且在签入时发生冲突,因为在此构建签出后签入了另一个构建。使用具有大量错误处理和验证以及处理冲突能力的自定义任务。不要大量使用 TF.EXE。

网站

于 2013-01-11T17:30:40.293 回答
0

不要签入版本文件——它会带来无穷无尽的麻烦。相反,使用 TFS 提供的构建名称即时生成它,并使用它进行编译。我们从Wintelect 的解决方案(支持 C++、C# 和其他语言)开始,并对其进行了修改,以将构建的实际版本字符串作为字符串包含在内。

警告:每次创建文件都会破坏增量构建。我们最终仅在文件不存在时才重新创建文件,这意味着增量构建具有不正确的构建编号 - 但我们的“官方”构建不是增量的,并且具有正确的编号。

于 2013-01-11T18:29:13.943 回答
0

有趣的想法,我不知道是否可以通过内置的构建活动(可能不是)来执行此操作,但是,您可以使用 Invoke Process 调用您想要的任何其他内容,因此您可以尝试调用 tf. exe(即将文件名设置为路径\tf.exe 和参数设置为“checkout fullpathtothefile ”)以签出文件,进行编辑/更改(可能在另一个 Invoke Process 活动中),然后使用 Invoke Process 将其签回.

只是把想法扔在那里!

于 2013-01-11T17:02:02.117 回答