I’m currently working on a big project for a company and I’m stuck. We use TFS 2012, we have several branches (Dev => Main => pre-prod => prod).
When a project is in prod, if a bug occurs, we do a patch. It means we only deliver DDLs that are impacted by the bug’s correction.
To do it, the developer in charge of the bug’s correction check-in his code, and gives me the changeset number so I can know what are the files impacted by the checkin and deduce the dlls that need to be delivered.
And my problem is here, how can I know these DLLs names thanks to the changeset number? I’m currently parsing all the .csproj and I’m looking if the files that are in the changeset log are present in the csproj. If yes, then I’m looking for the AssemblyName (which gives me the DLL’s name).
But this is not good to me since I’m parsing it as a String, it’s not relyable and not evolutive.
If you have any better way (or even something already written 🙂 ) go for it please 😉
Thanks !
You should in fact be deploying all of the DLL’s and not just the Diff. If you have many separate components to your application then it may be advisable to deploy only one component but you need to have concrete interfaces for that to work.
The best way to achieve what you are talking about is to have all of your DLL’s created at the same time using a Build Server. There are many options from TFS through to Cruse Control and Hudson, but they all create a specific ‘build’ of your software. This will have all of the files necessary to deploy a new version of your software packaged (however you like) and gives you assurance that everything works together as you would push a build, without ever recompiling or changing the DLL’s, through each of your stage gates (Dev, test, QA, PreProd) and into production.
When you fix a bug even if it only hist a single DLL’ you should deploy all of your DLL’s as they are known to work together in that package.
This is not something that is or can be solved by branching or changesets. You need Builds…