Scott Hanselman posted up a good piece on his blog about how they layout their source tree. He mentions quite a few good tools but gets down into specifics about how they lay things out. My builder managers toolkit pretty much includes these things:

  • CVS or SVN today, Hatteras tomorrow.
  • NAnt today, MSbuild tomorrow.
  • FxCop today and tomorrow.
  • Draco.NET today, Team System tomorrow.
  • MbUnit today, built-in VS2005 tomorrow.

Now when it comes to laying out my filesystem - I do this and it just seems to work really nicely.

  • ModuleDirectory\
    • Module.build
    • Module.FxCop
    • Source\
      • SolutionDirectory\
        • ProjectDirectory\
        • ProjectDirectory\
        • ProjectDirectory\
    • Documentation\
    • Tools\
      • NAnt\ (copy of NAnt)
      • MbUnit\ (copy of MbUnit)
      • Build\ (custom NAnt tasks)
      • FxCop\ (copy of FxCop)
    • Templates\
      • AssemblyVersionInfo.cs
    • Keys\
      • Organisation.snk

Of course, this is just one module in CVS – it fits into a much larger picture.