TFS Best Practice<p align=left><font face=Arial size=2>Could somebody let me know if what I want to do is possible.</font></p> <p align=left> </p> <p align=left>My current client creates line of business apps most of which take between 1 and 6 months to write. I am trying to work out how we should work with TFS and have come to a standstill on a couple of points. </p> <p align=left> </p> <p align=left>We have lots of little applications most of which rely on certain 'common layers/frameworks'. I had come to the conclussion that it would be better to store all software solutions under one TFS prject.</p> <p align=left> </p> <p align=left>$TFSProj</p> <blockquote dir=ltr style="margin-right:0px"> <p align=left>Main </p> <blockquote dir=ltr style="margin-right:0px"> <p align=left>Source</p> <blockquote dir=ltr style="margin-right:0px"> <p align=left>Common</p> <p align=left>Project1 <font color="#ff0000">References Common1</font></p> <p align=left>Project2 <font color="#ff0000">References Common1</font></p> <p align=left><font color="#000000">Project3 No references</font></p></blockquote></blockquote></blockquote> <p align=left>TFSBuildTypes</p> <blockquote dir=ltr style="margin-right:0px"> <p align=left>Project1 Build Type</p> <p align=left>Project2 Build Type</p> <p align=left>Project3 Build Type</p></blockquote> <p align=left> </p> <p align=left>When we check in code that resolves a bug in one of these pieces of software a work item is always associated and resolved. </p> <p align=left> </p> <p align=left>My problem is that from a Change Management/Config perspective the build report that outlines the associated 'Change Sets' and 'Work Items' would seem meaningless. If I make a change to Project1 and check in against work item 123 and then run Project1 Build Type, Project2 Build Type, Project3 Build Type each one reports that it is associated with the same 'Change Set' and 'Work Items'. Surely the build knows what files are included in the build and therefore what work items to include.</p> <p align=left> </p> <p align=left>This means I cannot tell what 'Work Items' relate to a build and therefore can not easily (automaticallly) create a release note of the 'Work Items' included.</p> <p align=left> </p> <p align=left>I can get the granularity I want by creating a TFS Project for each piece of software but this then seems a big pain to handle references to common frameworks (branching in form other tfs projects) and building.</p> <p align=left> </p> <p align=left>Is there a way arround my issue or should I bite the bullet and create a project per application ?</p> <p align=left> </p> <p align=left>I have been reading the TFS best practice guide from the Patterns &amp; Practices team but this does not seem to cover my scenario.</p> <p align=left> </p> <p align=left>Regards</p> <p align=left> </p> <p align=left>Ben</p> <p align=left> </p> <p align=left> </p>© 2009 Microsoft Corporation. All rights reserved.Thu, 09 Oct 2008 21:22:14 Z5a017a4b-4617-4339-af18-3077c77abb20http://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/5a017a4b-4617-4339-af18-3077c77abb20#5a017a4b-4617-4339-af18-3077c77abb20http://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/5a017a4b-4617-4339-af18-3077c77abb20#5a017a4b-4617-4339-af18-3077c77abb20chrishawkinshttp://social.msdn.microsoft.com/Profile/en-US/?user=chrishawkinsTFS Best Practice<p align=left><font face=Arial size=2>Could somebody let me know if what I want to do is possible.</font></p> <p align=left> </p> <p align=left>My current client creates line of business apps most of which take between 1 and 6 months to write. I am trying to work out how we should work with TFS and have come to a standstill on a couple of points. </p> <p align=left> </p> <p align=left>We have lots of little applications most of which rely on certain 'common layers/frameworks'. I had come to the conclussion that it would be better to store all software solutions under one TFS prject.</p> <p align=left> </p> <p align=left>$TFSProj</p> <blockquote dir=ltr style="margin-right:0px"> <p align=left>Main </p> <blockquote dir=ltr style="margin-right:0px"> <p align=left>Source</p> <blockquote dir=ltr style="margin-right:0px"> <p align=left>Common</p> <p align=left>Project1 <font color="#ff0000">References Common1</font></p> <p align=left>Project2 <font color="#ff0000">References Common1</font></p> <p align=left><font color="#000000">Project3 No references</font></p></blockquote></blockquote></blockquote> <p align=left>TFSBuildTypes</p> <blockquote dir=ltr style="margin-right:0px"> <p align=left>Project1 Build Type</p> <p align=left>Project2 Build Type</p> <p align=left>Project3 Build Type</p></blockquote> <p align=left> </p> <p align=left>When we check in code that resolves a bug in one of these pieces of software a work item is always associated and resolved. </p> <p align=left> </p> <p align=left>My problem is that from a Change Management/Config perspective the build report that outlines the associated 'Change Sets' and 'Work Items' would seem meaningless. If I make a change to Project1 and check in against work item 123 and then run Project1 Build Type, Project2 Build Type, Project3 Build Type each one reports that it is associated with the same 'Change Set' and 'Work Items'. Surely the build knows what files are included in the build and therefore what work items to include.</p> <p align=left> </p> <p align=left>This means I cannot tell what 'Work Items' relate to a build and therefore can not easily (automaticallly) create a release note of the 'Work Items' included.</p> <p align=left> </p> <p align=left>I can get the granularity I want by creating a TFS Project for each piece of software but this then seems a big pain to handle references to common frameworks (branching in form other tfs projects) and building.</p> <p align=left> </p> <p align=left>Is there a way arround my issue or should I bite the bullet and create a project per application ?</p> <p align=left> </p> <p align=left>I have been reading the TFS best practice guide from the Patterns &amp; Practices team but this does not seem to cover my scenario.</p> <p align=left> </p> <p align=left>Regards</p> <p align=left> </p> <p align=left>Ben</p> <p align=left> </p> <p align=left> </p>Tue, 26 Aug 2008 13:22:13 Z2008-09-01T11:09:15Zhttp://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/5a017a4b-4617-4339-af18-3077c77abb20#d8dd8bec-c91d-4c46-9306-e2e4b8b16b1bhttp://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/5a017a4b-4617-4339-af18-3077c77abb20#d8dd8bec-c91d-4c46-9306-e2e4b8b16b1bHua Chenhttp://social.msdn.microsoft.com/Profile/en-US/?user=Hua%20ChenTFS Best Practice<font face=Arial size=2> <p class=MsoNormal style="margin:0in 0in 10pt"><font face=Calibri size=3>Hello Ben,</font></p> <p class=MsoNormal style="margin:0in 0in 10pt"><font face=Calibri size=3>   I am not sure I catch the problem, it there is any misunderstanding, please let me know.</font></p> <p class=MsoNormal style="margin:0in 0in 10pt"><font face=Calibri size=3>   Based on my understanding, </font></p> <p class=MsoNormal style="margin:0in 0in 10pt"><font face=Calibri size=3>            1. Changesets are added to source codes tree. They don't care for which team build type builds them.</font><font face=Calibri size=3> From the detail of a Changeset, there is no link to team build types or team build results. </font><font face=Calibri size=3>       </font></p> <p class=MsoNormal style="margin:0in 0in 10pt"><font face=Calibri size=3>                That is each team build can contain same changesets.</font></p> <p class=MsoNormal style="margin:0in 0in 10pt"><font face=Calibri size=3>                 It is reasonable. Let's look at one example scenario:</font></p> <p class=MsoNormal style="margin:0in 0in 10pt"><font face=Calibri size=3>                    1. We fixed one bug at the common project, check in one changeset with ID ***.</font></p> <p class=MsoNormal style="margin:0in 0in 10pt"><font face=Calibri size=3>                    2. We start Build Type1 to build Project1 which refers the common project.</font></p> <p class=MsoNormal style="margin:0in 0in 10pt"><font face=Calibri size=3>                        Because the common project has been revised, so the revision (changeset ***) should be included at </font></p> <p class=MsoNormal style="margin:0in 0in 10pt"><font face=Calibri size=3>                        team build result (build report) to reflect the souce codes' changes.</font></p> <p class=MsoNormal style="margin:0in 0in 10pt"><font face=Calibri size=3>                   3. We start Build Type2 to build Project2 which also refers the common project. </font></p> <p class=MsoNormal style="margin:0in 0in 10pt"><font face=Calibri size=3>                       It is the same as the Project1 that team build result should include the changeset ***. </font></p> <p class=MsoNormal style="margin:0in 0in 10pt"><font face=Calibri size=3>                     Another issue is how we define the work items related to the changeset ***.  </font></p> <p class=MsoNormal style="margin:0in 0in 10pt"><font face=Calibri size=3>                     If it is a bug item, we need to make it clear that it is as a common bug which influences codes both at Project1 and Project2 folders. </font></p> <p class=MsoNormal style="margin:0in 0in 10pt"><font face=Calibri size=3>                    Then both builds include it to let us know the build has already taken the bug and the bug fix to the build process.</font></p> <p class=MsoNormal style="margin:0in 0in 10pt"><font face=Calibri size=3>                Thanks.</font></p> <p align=left></font>                  </p> <p align=left> </p>Thu, 28 Aug 2008 03:18:45 Z2008-09-01T11:09:15Zhttp://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/5a017a4b-4617-4339-af18-3077c77abb20#abbf029a-a381-4574-9256-ddbe224dfb3chttp://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/5a017a4b-4617-4339-af18-3077c77abb20#abbf029a-a381-4574-9256-ddbe224dfb3cchrishawkinshttp://social.msdn.microsoft.com/Profile/en-US/?user=chrishawkinsTFS Best Practice<p align=left><font face=Arial size=2></font> </p><span> <p>My problem relates more to how we should structure out TFS projects. </p> <p align=left> </p> <p align=left>As our applications are discreet tools that may or may not rely on common frameworks should we store each one in its own TFS proejct ? The problem I have at the moment is this :</p> <p align=left> </p> <blockquote dir=ltr style="margin-right:0px"> <p align=left>I store project1 and project2 (unrelated applications that rely on a common framework) in the same TFS project along with the common frameworks.</p> <p align=left>I fix a bug with project1 check in the code and resolve a work item.</p> <p align=left>I run project1 tfs build.</p> <p align=left>I fix a bug with project2 check in the code and resolve a work item</p> <p align=left>I run project2 tfs build.</p> <p align=left>The build report for project2 tfs build contains the work items fixed and associated with project1</p> <p align=left> </p></blockquote> <p dir=ltr align=left>My question is, should I be storing project1 and project2 in seperate TFS projects and branching in the common code from another TFS project to both.</p> <p dir=ltr align=left> </p> <p dir=ltr align=left>Regards &amp; Thanks</p> <p dir=ltr align=left> </p> <p dir=ltr align=left> </p> <p dir=ltr align=left>Ben.</p></span>Thu, 28 Aug 2008 09:34:36 Z2008-08-28T09:34:36Zhttp://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/5a017a4b-4617-4339-af18-3077c77abb20#81d7f492-f36e-4aee-8f42-c3437b497a6bhttp://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/5a017a4b-4617-4339-af18-3077c77abb20#81d7f492-f36e-4aee-8f42-c3437b497a6bRichard Berghttp://social.msdn.microsoft.com/Profile/en-US/?user=Richard%20BergTFS Best Practice<font size=2><span style="font-family:Arial">I think your strategy is sound -- just need to fix the build report.  You might post in the Team Build and/or Reporting forums for more targeted answers.<br></span></font>Thu, 28 Aug 2008 18:24:24 Z2008-08-28T18:24:24Zhttp://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/5a017a4b-4617-4339-af18-3077c77abb20#2271a2c1-9850-4375-b9a9-a115655a961bhttp://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/5a017a4b-4617-4339-af18-3077c77abb20#2271a2c1-9850-4375-b9a9-a115655a961bchrishawkinshttp://social.msdn.microsoft.com/Profile/en-US/?user=chrishawkinsTFS Best Practice<p>So would your suggestion be to keep everything in the one project and change the build report? </p> <p align=left> </p> <p align=left>Regards</p> <p align=left> </p> <p align=left> </p> <p align=left>Ben</p> <p align=left> </p>Fri, 29 Aug 2008 09:49:25 Z2008-08-29T09:49:25Zhttp://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/5a017a4b-4617-4339-af18-3077c77abb20#f4a395f9-3ee2-457a-a3c7-729823844136http://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/5a017a4b-4617-4339-af18-3077c77abb20#f4a395f9-3ee2-457a-a3c7-729823844136OsirisTerjehttp://social.msdn.microsoft.com/Profile/en-US/?user=OsirisTerjeTFS Best Practice<p align=left><font face=Arial size=2>Hi !</font></p> <p align=left> </p> <p align=left>I might be interrupting into some chain of thought here, apologize for that <img src="http://forums.microsoft.com/MSDN/WebResource.axd?d=NySzF1eivP_rMoc50GQJzcvS4MHMOEKwYrCIgDtzuzlw7GsNki3H_INlfYaLgkxFdA4ESFRtesEUXj11MHjIL5WMBvm3Pubiu_iWcnqAaGQ1&amp;t=633337194230757564">, but I would like to add some &quot;comments&quot; to this from the starting post.  Btw, &quot;comments&quot; are possibly not the right word here, apologize for making rather a long post, but your question and problem is in fact rather interesting and deserves some thought.  There is guidelines for this on codeplex, see <a title="http://www.codeplex.com/TFSGuide/Release/ProjectReleases.aspx?ReleaseId=6280" href="http://www.codeplex.com/TFSGuide/Release/ProjectReleases.aspx?ReleaseId=6280">http://www.codeplex.com/TFSGuide/Release/ProjectReleases.aspx?ReleaseId=6280</a> but I feel the guidelines there on source code structure is somewhat lacking, althought not in any way wrong, but I would like to add from my own experience, take this for what is it - good intentions <img src="http://forums.microsoft.com/MSDN/WebResource.axd?d=NySzF1eivP_rMoc50GQJzcvS4MHMOEKwYrCIgDtzuzlw7GsNki3H_INlfYaLgkxFdA4ESFRtesEUXj11MHjIL5WMBvm3Pubiu_iWcnqAaGQ1&amp;t=633337194230757564">.</p> <p align=left> </p> <p align=left>A)  A decision to use one or multiple TFS Projects should be based on other criteria, like teams, rights management, etc,  and not on the problem you have.  So, I would agree that you can keep everything in one project, if that's the best for you managementwise.</p> <p align=left> </p> <p align=left>B) The reason you get the behaviour you describe first, is that both your builds &quot;points&quot;, so to speak, at the level above your projects, that is the node called 'source'.  It is this that determines what is shown in the build report.  And no, you should not change anything in the build report. At this level, you probably have two solutions, one called Project1 and one called Project2 (?), or if you have the solutions down at the level of the Project1 and Project2, you have still your workspace for the build at the level of the 'source'.  </p> <p align=left> </p> <p align=left>So in order to get the behaviour you want, you have some options.  Which to choose depends a bit on the size of your projects, including common, and the stability of the 'common' framework, your team sizes, how much isolation between them you want etc etc.  </p> <p align=left>I'll outline these options below:</p> <p align=left> </p> <p align=left> </p> <p align=left><strong>Solution 1.  Multiple build workspacemappings</strong>: Choose this if:  </p> <blockquote dir=ltr style="margin-right:0px"> <p align=left>Your projects are small, </p> <p align=left>common is small, </p> <p align=left>your teams are small, </p> <p align=left>or the same team works on all projects including common, </p> <p align=left>and/or 'common' is not very stable, meaning it's as likely to change as your projects. </p></blockquote> <p align=left>Setup:  </p> <blockquote dir=ltr style="margin-right:0px"> <p align=left>Keep your source structure exactly as you have outlined.  </p> <p align=left>Move (if they are not already there, by default they should) your solution files (sln) down to each project, this is essential.  </p> <p align=left>Use project references between each project and common, exactly as you have outlines. Ignore the warning from Visual Studio you may get above referring above your root. You know what you're doing.</p> <p align=left>Now the change from what you have today:  </p> <blockquote dir=ltr style="margin-right:0px"> <p align=left>In the workspacemapping of your build (See Edit Build, 'Workspace'), make -2- mappings, one goes to Project1, and the other goes to Common. </p> <p align=left>Do the same for Project2. </p></blockquote></blockquote> <p align=left>          If you now change something in Project1, and on that checkin associates this with a workitem,both the workitem and the changeset will only show up in the build report for Project1, and  nothing will show int the build report for Project2.</p> <p align=left>Advantages:  Simple to do</p> <p align=left>Disadvantages: A developer may not always get the latest source down, if they are unaware of the dependency on Common. If Common is a very long path-way away from your project, more levels than what you have shown above, this problem is much more likely to happen, in that case got to solution 2 or 3.</p> <p align=left> </p> <p align=left><strong>Solution 2.  Source code branching</strong>:  Choose this if:</p> <blockquote dir=ltr style="margin-right:0px"> <p align=left>Your projects are a bit larger,</p> <p align=left>a separate team is or has been working with Common</p> <p align=left>you need isolation between projects, meaning Project2 will not be bothered by requests from Project1 to change something in Common.</p> <p align=left>You have a more complex source code structure.</p></blockquote> <p dir=ltr align=left>Setup: </p> <blockquote dir=ltr style="margin-right:0px"> <p dir=ltr align=left>Change your source code structure below Project1 and Project2 to include a branch FROM Common. that is, make it look like:</p></blockquote> <p dir=ltr align=left> <div class=codeseg> <div class=codecontent> <div class=codesniptitle><span style="width:100%">Code Snippet</span></div> <p dir=ltr align=left>Source</p> <blockquote dir=ltr style="margin-right:0px"> <p dir=ltr align=left>Common</p> <p dir=ltr align=left>Project1</p> <blockquote dir=ltr style="margin-right:0px"> <p dir=ltr align=left>CommonBranched</p></blockquote> <p dir=ltr align=left>Project2 </p> <blockquote dir=ltr style="margin-right:0px"> <p dir=ltr align=left>CommonBranched</p></blockquote></blockquote> <p align=left> </p></div></div> <p align=left> </p> <p align=left>Then of course create the branches from Common to the two respective CommonBranched. </p> <p align=left>It is probably wise in this setup to have a separate solution for Common alone, and its own CI build to make sure it is correct before merging changes over to the Branches.</p> <p align=left>The solutions for Project1 and Project2 should be as described in solution 1, no changes there. </p> <p align=left>Note that one would normally not do any changes in the source in the CommonBranches, one could of course, but that would create a mergin issue later when one merges new or updated code from the Common trunk.</p> <p align=left>Advantages:  </p> <blockquote dir=ltr style="margin-right:0px"> <p align=left>Provides better separation between the projects and common</p></blockquote> <p align=left>A developer will always get a buildable solution if he takes get latest from the Project node.</p> <p dir=ltr style="margin-right:0px" align=left>Disadvantages:</p> <blockquote dir=ltr style="margin-right:0px"> <p dir=ltr style="margin-right:0px" align=left>Every change in Common must be merged over to the branches.  This will give an extra step in the process.  For a small 'enterprise' this overhead may not be justified, for a lager one, it may be an advantage - due to the fact that this provides isolation and awareness of changes. </p> <p dir=ltr style="margin-right:0px" align=left>Possible changes to the branched source could make them non-mergeable at a later time.</p> <p dir=ltr style="margin-right:0px" align=left> </p></blockquote> <p dir=ltr style="margin-right:0px" align=left><strong>Solution 3:  Binary deployment branching</strong>:  Choose this if:</p> <blockquote dir=ltr style="margin-right:0px"> <p dir=ltr style="margin-right:0px" align=left>You have (a/many) large project(s)</p> <p dir=ltr style="margin-right:0px" align=left>Your common framework is rather stable, </p> <p dir=ltr style="margin-right:0px" align=left>Your common framework is used in many other projects, and you would not take the risk that someone at those projects made changes to the source that would make them non-mergeable at a later time.</p></blockquote> <p dir=ltr style="margin-right:0px" align=left>Setup:</p> <blockquote dir=ltr style="margin-right:0px"> <p dir=ltr style="margin-right:0px" align=left>Change the source code structure as follows:</p></blockquote> <p dir=ltr style="margin-right:0px" align=left> <div class=codeseg> <div class=codecontent> <div class=codesniptitle><span style="width:100%">Code Snippet</span></div> <p dir=ltr style="margin-right:0px" align=left>Source</p> <blockquote dir=ltr style="margin-right:0px"> <p dir=ltr style="margin-right:0px" align=left>Common</p> <blockquote dir=ltr style="margin-right:0px"> <p dir=ltr style="margin-right:0px" align=left>Deploy</p></blockquote> <p dir=ltr style="margin-right:0px" align=left>Project1</p> <blockquote dir=ltr style="margin-right:0px"> <p dir=ltr style="margin-right:0px" align=left>CommonBranched  (or Libs)</p></blockquote> <p dir=ltr style="margin-right:0px" align=left>Project2</p> <blockquote dir=ltr style="margin-right:0px"> <p dir=ltr style="margin-right:0px" align=left>CommonBranched (or Libs)</p></blockquote></blockquote> <p align=left> </p></div></div> <p align=left> </p> <p>In addition to the CI build for Common, you should make what I would call a public build, which you build every time you want a new &quot;release&quot;. This build should have an extra step, f.e. using the <font color="#0000ff" size=2>AfterEndToEndIteration <font color="#000000">target</font>, </font> that it should check in the resulting 'dll' and 'pdb' file into the Deploy folder.  (Use the <font color="#0000ff" size=2>***NO_CI*** <font color="#000000">trick on that checkin to avoid triggering the CI build again.)  This build btw, should not be triggered or scheduled.  You trigger this build manually whenever you need a  new release of the Common library. </font></p></font> <p align=left>Now, when that is done, branch the Deploy folders, which mean that you in fact branch the binaries, into the CommonBranched folders.  </p> <p align=left>Advantages:</p> <blockquote dir=ltr style="margin-right:0px"> <p align=left>The teams working on Project1 and Project2 can't mess up the source code. IF they want a change they must post a workitem to the Common team, and wait for a new release. <img src="http://forums.microsoft.com/MSDN/WebResource.axd?d=NySzF1eivP_rMoc50GQJzcvS4MHMOEKwYrCIgDtzuzlw7GsNki3H_INlfYaLgkxFCLVvZNcnIJT9x2uZNvyuIGWah9F3g0vyQYx7NayjHus1&amp;t=633337194230757564">. This is a good thing !</p> <p align=left>Good isolation (as in Solution 2), and the framework is very nicelly controlled, but in addition, no possibility for a source code problem with the Common source code branched into the projects. </p></blockquote> <p dir=ltr align=left>Disadvantages:</p> <blockquote dir=ltr style="margin-right:0px"> <p dir=ltr align=left>The build scripts must be modified</p> <p dir=ltr align=left>Binaries must be checked in (not a problem IMHO). </p> <p dir=ltr align=left>Versioning should be introduced in the build process (not described in this post), may further complicate the build script</p> <p dir=ltr align=left>Advantage in disadvantage:  </p> <blockquote dir=ltr style="margin-right:0px"> <p dir=ltr align=left>When the build script changes have been done, the process is smooooottth <img src="http://forums.microsoft.com/MSDN/WebResource.axd?d=NySzF1eivP_rMoc50GQJzcvS4MHMOEKwYrCIgDtzuzlw7GsNki3H_INlfYaLgkxFmac-VIm2t3F15sLUhe5iKuA0JNA_VrWx4LNOoZPN6Cc1&amp;t=633337194230757564">.</p></blockquote></blockquote> <p dir=ltr align=left> </p> <p dir=ltr align=left> </p> <p dir=ltr align=left>Regardless of which solution above you prefer to implement, your problem with workitems will be solved.  All three solutions will provide the necessary isolation.</p> <p dir=ltr align=left>The immidiate respons to your question will be soltuion 1, but I feel you should know about the other two alternatives before you make your advice to the client. There is of course even more strategies, like f.e. those in the TFS Guide (link at head of post), but the solutions mentioned in this post are what have worked for our company with our clients.</p> <p dir=ltr align=left> </p> <p dir=ltr align=left>best regards</p> <p dir=ltr align=left>Terje  </p> <p dir=ltr align=left> </p> <p dir=ltr align=left> </p> <p dir=ltr align=left> </p> <p dir=ltr align=left> </p> <blockquote dir=ltr style="margin-right:0px"> <p align=left> </p> <blockquote dir=ltr style="margin-right:0px"> <p dir=ltr style="margin-right:0px" align=left> </p></blockquote></blockquote> <p dir=ltr style="margin-right:0px" align=left> </p> <p dir=ltr style="margin-right:0px" align=left> </p> <p dir=ltr style="margin-right:0px" align=left> </p> <p align=left> </p> <p></p> <blockquote dir=ltr style="margin-right:0px"> <blockquote dir=ltr style="margin-right:0px"> </blockquote> <p dir=ltr align=left> </p> <p dir=ltr align=left>    </p> <p align=left> </p> <p align=left> </p></blockquote> <p align=left> </p> <p align=left> </p> <p align=left> </p> <p align=left> </p>Sat, 30 Aug 2008 19:42:43 Z2008-09-01T02:48:30Zhttp://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/5a017a4b-4617-4339-af18-3077c77abb20#fb84f06f-ebb1-4b79-ac73-110d70d46db4http://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/5a017a4b-4617-4339-af18-3077c77abb20#fb84f06f-ebb1-4b79-ac73-110d70d46db4chrishawkinshttp://social.msdn.microsoft.com/Profile/en-US/?user=chrishawkinsTFS Best Practice<p align=left><font face=Arial size=2></font> </p> <p>Terje</p> <p align=left> </p> <p align=left>Thanks for the information. All the solutions you have outlined look workable. We will probably use the first option as we are a relatively small team. Sorry I didnt get back to you earlier but I have been away on holiday (first day back booo)</p> <p align=left> </p> <p align=left>Regards &amp; Thanks</p> <p align=left> </p> <p align=left> </p> <p align=left> </p> <p align=left>Ben</p>Mon, 08 Sep 2008 09:48:37 Z2008-09-08T09:48:37Z