gpt4 book ai didi

visual-studio-2012 - TFS 2012 多种解决方案和构建带有门控 checkin

转载 作者:行者123 更新时间:2023-12-05 01:25:49 25 4
gpt4 key购买 nike

从 MSDN 论坛复制原始问题 here但在 TFS 2010 中没有解决。我们使用的是 TFS 2012。

我在相应的文件夹中有两个解决方案,例如

解决方案A\解决方案A.sln
解决方案B\解决方案B.sln

每个解决方案都配置了 Gated Check-in 构建;即两个构建定义 GatedSolutionA 和 GatedSolutionB。

现在的情况是,如果我同时检查两个文件夹中的更改,TFS 会显示一个对话框来选择构建(使用 GatedSolutionA、GatedSolutionB 下拉)以针对更改集运行。我的变更集在解决方案 B 中有重大更改,在解决方案 A 中有非重大更改。即构建 GatedSolutionB 会失败,但 GatedSolutionA 会通过。

当我选择 GatedSolutionA 来针对我的变更集进行构建时,TFS 将其 checkin ,这反过来使解决方案 B 处于损坏状态,并且解决方案 B 的门控 checkin 目的被破坏。

如果我将触发器更改为 CI 以进行构建定义,TFS 会将两个构建都排入队列。

我正在寻找的是相同的行为,即所有门控构建都排队,如果其中一个失败,变更集应该被拒绝。

注意:我不想为这两种解决方案创建单一的构建定义。另外,我知道我们可以通过创建两个单独的变更集来避免这个问题的发生,但这通常发生在开发人员不知道他们有一些文件正在 checkin 以寻求解决方案而不是他们正在处理的解决方案时。

VS/TFS 2010 和 TFS 2012 之间是否有任何改进或更改以适应这种情况?

编辑

我会尝试用一个场景来澄清。

解决方案A(我们称之为标准计算器)包含 2 个项目,ProjectA 和 ProjectC。 ProjectA 是一个名为 StandardCalculatorUI 的控制台应用程序,ProjectC 是一个名为 CalculatorLogic 的类库。

解决方案B(我们称之为 AdvancedCalculator)包含 2 个项目。 ProjectB 是一个名为 AdvancedCalculatorUI 的控制台应用程序和相同的 ProjectC(一个名为 CalculatorLogic 的类库)

ProjectC 实现了加、减、除和乘的公共(public)方法。

ProjectA 从 ProjectC 调用 Add 和 Subtract 的功能。

ProjectB 从 ProjectC 调用除法和乘法的功能。

GatedSolutionA 构建定义构建 SolutionA(以及 ProjectA 和 ProjectC)

GatedSolutionB 构建定义构建 SolutionB(以及 ProjectB 和 ProjectC)

现在打开解决方案A,我从ProjectC中删除乘法和除法方法,因为ProjectA不使用它们(但在不知不觉中ProjectB(在SOlutionB中)使用它们)。

我 checkin 了我的代码,并显示了要检查的 Gated 构建定义(因为 GatedSolutionA 和 GatedSolutionB 的工作区映射为包含 ProjectC)。

如果我选择 GatedSolutionA,那么 checkin 将成功并因此被 checkin ,在不知不觉中破坏了解决方案 B。

我想要它做的是对 GatedSolutionA 和 GatedSolutionB 排队,而不是强制我选择一个。

最佳答案

爱德华给出了我用过的答案。您必须创建一个新的构建定义。

我们通过创建一个包含所有项目的单独解决方案解决了类似的情况。该解决方案由单独的门控构建定义使用。您仍然有其他构建定义,但触发器将是手动的(不是门控的)。

因此,您将有 3 个解决方案:StandardCalc、AdvancedCalc 和 BothCalcs。和 3 个构建定义。在开发过程中,您不会使用包罗万象的解决方案。

关于visual-studio-2012 - TFS 2012 多种解决方案和构建带有门控 checkin ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16839407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com