This project has moved and is read-only. For the latest updates, please go here.

csproj merge next?

Jul 12, 2010 at 8:14 PM
Greetings, I just found this tool after working with my development team on how to solve the problems of multiple teams editing solutions. I have high hopes for this. The other problem we discussed is multiple developers adding class files to a project. This is as problematic as editing solution files. Do you have any plans to add a merge tool for csproj files? Thanks. Dale
Coordinator
Aug 28, 2010 at 7:43 PM

Hi Dale,

Sorry for the long delay, it's been a while since I checked my CodePlex project.  I won't win the 'open source coordinator' award anytime soon.  8) 

To answer your question, no, I don't plan to add a merge tool for csproj files in the short term.

The first reason is that I'm not sure if I could make a 'safe' merger for csproj file. The format of the csproj file (or any msbuild file) is a lot more flexible than solution file. The problem is that a 'custom' merger need to 'understand' every line of a file to be certain that it's not loosing any information during the merge. Which is not easy for a format like msbuild.

The second reason is that, while it could be useful to have a tool to simplify the merge of project files, I don't feel it's as needed as for solution files. From my experience, merging project file is not really different then merging a source file (i.e. cs file). A 'generic' merger usually does the job (even if it can be painful sometime as any merge can be). The only difference is that it might happen more often because the file has more chance to be modified by different developer. 

In my opinion, the things that make the solution file harder than any other file to merge are the following:

  • Information related to a specific project is scattered around the file (little bit in the project section, little bit in the source control section, little bit in the ProjectConfigurationPlatforms section, etc). Also, the different pieces of informations in the file are identified using a GUID. Trying to keep track of which GUID is related to which project can be really hard especially if multiples changes has been made at the same time.
  • The items in the Source Control section are numbered. If an addition or withdrawal of a project is done, it means that the developer need to renumber all the rows in the section by hand.

Christian

Mar 8, 2011 at 3:58 PM

Project: Merge can handle comparing/merging XML files, such as csproj, as XML instead of plain text.  More information can be found at the Project: Merge website: http://www.projectmerge.com

Christian, good job with the SLN tools.  I've been using them on and off since I first found them a couple of years ago.

 

James