TFS 2010多种解决方案并通过门控检查进行构建
我有两个解决方案在他们相应的文件夹中
SolutionASolutionsA.sln
SolutionBSolutionB.sln
每个解决方案都配置了门控签入版本; 即两个构建定义GatedSolutionA和GatedSolutionB。
现在情况是,如果我同时在两个文件夹中检入更改,TFS将显示一个对话框以选择构建(使用GatedSolutionA,GatedSolutionB下拉)以针对变更集运行。 我的变更集在解决方案B中发生了突破性变化,解决方案A中发生了非重大变化。即构建GatedSolutionB将失败,但GatedSolutionA会通过。
当我选择GatedSolutionA来针对我的变更集进行构建时,TFS会将其检入,这反过来使解决方案B处于故障状态,并且针对解决方案B而拒绝选通检入的目的。
如果我将触发器更改为构建定义的配置项,则TFS会将两个构建排队。
我正在寻找的是同样的行为,即所有门控构建排队,如果其中一个失败,changeset应该被拒绝。
注意 :我不想为这两个解决方案创建单个构建定义。 另外,我知道我们可以通过创建两个单独的变更集来避免此问题的发生,但这通常发生在开发人员不知道他们有一些文件正在检查解决方案而非正在处理的情况下。
@Gchaves找到了这个问题的解决方案,如果您将“源代码管理文件夹”配置到您拥有SolutionA的内部文件夹中,则可以转到“编辑构建定义”并在“工作区”选项卡上。
例如,如果你有这个文件系统:
现在,如果将“源代码管理文件夹”和“生成代理文件夹”配置为Projects SolutionA,则只有在尝试检入SolutionA时才会触发门控检入,并且它只会编译SolutionA.sln(为此为真您必须在流程标签 - > 1.Required-> ProjectsToBuild上只需指向SolutionA.sln)
然后,您可以在同一个工作空间下建立多个解决方案,建立,签入并贴上标签:)
在Process选项卡中的构建定义中,您可以选择多个构建的sln。
解决这个问题的一个办法是让开发人员为单独的解决方案映射单独的工作空间。 如果解决方案之间没有代码重叠,并且您试图阻止开发人员在门户构建另一个解决方案时检查到一个解决方案,那么他们应该使用不同的工作空间。
如果您有SolutionA的WorkspaceA和SolutionB的WorkspaceB,则挂起的更改对话框将只显示对相应工作区所做的更改。
正如你所说,你知道你可以通过使用单独的变更集来避免它。 这就是你可能会“强迫”开发者使用两个单独的变更集并避免“开发者不知道......”的情况。
为他们创建工作区并撤消他们的“创建工作区”权限,以便他们不能创建包含这两个区域的工作区。
链接地址: http://www.djcxy.com/p/7817.html上一篇: TFS 2010 Multiple Solutions & Build with Gated Check
下一篇: iPhone Crash Logs Don't Symbolicate Correctly and are Double Spaced