4
votes

I've been reading through multiple documents regarding project structure in TFS 2012, and I believe I have a correct structure in mind. I just wanted to verify that for my scenario this is the ideal structure.

Currently we have multiple different solutions that make up our software suite. Each solution is a different application in the suite, but many of them rely on each other. There is also one common code library that is referenced by other solutions. In addition there are a set of third party DLL's that are referenced in multiple solutions.

Example:


Solution 1
    Project A
    Project D

Solution 2
    Project B
    Project D

Solution 3
    Project C
    Project A
    Project D 

Solution 4 (common code library)
    Project D

After reading through materials on TFS I have found that one project collection with one team project which includes all of the solutions is the recommended setup. Within this team project the folder structure would be as follows:

PROJECT COLLECTION
  TEAM PROJECT A
    Solution 1
      Source
      Release
    Solution 2
      Source 
      Release
    Solution 3
      Source
      Release
    Solution 4
      Source
      Release

A few questions:

  1. Is this the ideal way to setup TFS for my scenario?
  2. Should the common code library be placed with the other solutions?
  3. How should common third party DLL's be handled?
  4. When there are customer specific branches, should they be separate team projects?

Any guidance is greatly appreciated!

1

1 Answers

2
votes

We use this Structure:

PROJECT COLLECTION
    TEAM PROJECT A
        Features
            Solution 1 - New Feature 1
            Solution 2 - Fix Bug
        Main
            Solution 1
            Solution 2
            Solution Common
        Releases
            Solution 1 - v1.0.0.1
            Solution 1 - v1.1.0.0
            Solution 2 - v1.0.0.0
            Soltuion Common - v1.0.0.0

Each Solution under Features, Main and Releases is a Branch. This allows us to have one place for the mainline code one place for feature work and one place for releases and they will all share the same relative paths to each other.