1

I'm new to Visual Studio and the concepts of projects, solutions and Team Foundation Server.

We're developing a Windows application which uses web services and XSLT. The WinApp and web service code is shared between different customers but we have customer specific DTD/XSD/XSLT (for example).

Currently, all code is maintained in SourceSafe (something we're planning to replace with TFS) with both the shared core and customer specific code in one and the same place (yes, that's how we do it...). We also use one and the same solution for all code, both shared and customer specific.

What I would like to do is create one repository for each customer (I'm thinking in terms of Git here...) which includes all customer specific code and references the shared code as submodules. But my question is, is this

  1. How do I accomplish something like this with TFS?

  2. How do I manage the solutions/projects in Visual Studio for both shared and customer specific code?

Maybe there's a simple solution to this problem which I've missed, if that's the case, please enlighten me!

Per T
  • 2,008
  • 17
  • 14
  • 2
    This seems like more of an architectural problem than a tools/source control one. Personally I don't see anything at all wrong with keeping it all in the same source repository (aside from the fact that it's vss of course... ugh). I'd probably make separate assemblies for each customer to separate them out, then use DI\IOC to inject their types where appropriate. – Brook Apr 26 '11 at 15:28
  • @Brook: Thanks, I realise this aswell. But I still haven't grasped how I should organize a project having shared and customer code the best possible way, both in the repository or in Visual Studio (and the concepts of solutions vs projects). Maybe it's just a matter of using VS more and it'll all make sense... – Per T Apr 27 '11 at 07:37
  • That's right Brook, this is an architectural problem, not one that you will solve with TFS. You need to have a pluging system of some sort, where you develop specific plugins for specific customers and you deploy accordingly. – David Rodrigues Apr 27 '11 at 16:30

1 Answers1

1

We just merged a large set of Visual Source Safe Solutions to Team Foundation Server 2010. for the common Frameworks we created a separate collection with Team Projects, where the developer has to get the latest version, from when needing to develop on the customer solutions.

For the customer solutions, I think this might be a solution; start creating a base (basic strucuture with the basic files in Team Foundation Server) and use Branching from this base to create the Customer specific versions.

In case you also need maintenance on the customer version, you might consider copying the Base customer solution to a new solution; Branch the new base to a development branch; work within the development branch and merge it back when ready for deployment (Testing and other branching I left out of this portion).

But it's not so much how you use Team Foundation Server for this, it is more a matter of having the correct practices and policies in place to assure application life-cycles.

Arjo
  • 46
  • 2
  • Thanks for the feedback. I realise that my question, and problem, might be kind of vague but your solution using branches for customer code does not appeal to me. Coming from Git I'd like to split the code up in different repos (read _Git repos_) and use something like Git submodules (or SVN externals) to handle the core/customer code integration. See [VonC's explanation in this question](http://stackoverflow.com/questions/3223922/git-workflow-for-custom-css-files-and-themes), is this possible in TFS? – Per T Apr 28 '11 at 07:33