Note that there are some explanatory texts on larger screens.

plurals
  1. POTFS 2012 Multiple Solutions & Build with Gated Check-in
    primarykey
    data
    text
    <p>Copied original question from MSDN forums <a href="http://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/e333d516-32bf-4bd0-a253-642afc1d746d" rel="nofollow">here</a> but was not solved within TFS 2010. We are using TFS 2012.</p> <p>I have two solutions in their corresponding folder e.g.</p> <p>SolutionA\SolutionsA.sln SolutionB\SolutionB.sln</p> <p>Each solution has Gated Check-in build configured; i.e. two build definitions GatedSolutionA and GatedSolutionB.</p> <p>Now the situation is, if I check in changes in both folders together TFS shows a dialog box to select build(drop down with GatedSolutionA, GatedSolutionB) to run against the changeset. My changeset has breaking changes in solution B and non-breaking changes in Solution A. i.e. Build GatedSolutionB would fail but GatedSolutionA would pass.</p> <p>When I select GatedSolutionA to build against my changeset, TFS checks it in, which in turn leaves the solution B in broken state and purpose of Gated check-in is defeated for Solution B.</p> <p>If I change the trigger to CI for build definitions, TFS queues both builds.</p> <p>What I am looking for is same behaviour i.e. All the Gated builds are queued and if one of them fails, changeset should be rejected.</p> <p>Note: I don’t want to create single build definition for both the solutions. Also, I know we can avoid this problem to happen by creating two separate changesets, but this is generally happening when developers are not aware that they have some files being checked in for solution other than they are working on .</p> <p>Has anything improved or changed between VS/TFS 2010 and TFS 2012 to accommodate this scenario?</p> <p>EDIT</p> <p>I'll try and clarify with a scenario. </p> <p>SolutionA (we'll call StandardCalculator) contains 2 projects, ProjectA and ProjectC. ProjectA is a console application called StandardCalculatorUI and ProjectC is a class library called CalculatorLogic. </p> <p>SolutionB (we'll call AdvancedCalculator) contains 2 projects. ProjectB is a console application called AdvancedCalculatorUI and the same ProjectC (a class library called CalculatorLogic)</p> <p>ProjectC implements public methods for Add, Subtract, Divide and Multiply.</p> <p>ProjectA calls the functionality for Add and Subtract from ProjectC.</p> <p>ProjectB calls the functionality for Divide and Multiply from ProjectC.</p> <p>GatedSolutionA build definition builds SolutionA (and thus ProjectA and ProjectC)</p> <p>GatedSolutionB build definition builds SolutionB (and thus ProjectB and ProjectC)</p> <p>Now with SolutionA open i DELETE the Multiply and Divide methods from ProjectC, because ProjectA doesnt use them (but unknowingly ProjectB (in SOlutionB)) does). </p> <p>I check in my code and am presented with which Gated build definition to check against, (Becuase GatedSolutionA and GatedSolutionB have workspaces mapped to include ProjectC). </p> <p>If I select GatedSolutionA then the checkin will succeed and thus be checked in, unknowingly breaking SolutionB. </p> <p>What i want it to do is queue against both GatedSolutionA and GatedSolutionB, not force me to pick one.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload