I know this is a strange situation, but consider a situation where two programmers are working on one project. One programmer is working on a database driven website in ASP.NET in Visual Studio 2012, while other programmer is working on Visual Studio 2008 on another part of the same database driven ASP.NET website.
What in your opinion is the best way to integrate the two codes?
PS: Downvoters please explain in comments, before downvoting. 🙂
Make the second developer update his VS copy to 2012. If you are working with two disparate versions of VS, you will very simply be unable to have either developer work on any part of the codebase that was built with (or upgraded to) the other version.
Once everyone’s working on the same platform, and thus can load and build the same solution, project and source code files without error, “integrating” the two codebases becomes rather trivial. Of course, the conversion process may not be so trivial.
My first step would be to ensure that a reliable backup of the entire codebase has been taken; you can copy the flat files to a file store, or more reliably you can use a centralized VCS like Subversion to make sure a single authoritative copy of the codebase as-is exists and can be easily retrieved. Then, while the 2008 dev is updating his machine to 2012, have the 2012 developer pull the whole codebase and load whatever solution the 2008 dev had been working in, and run through the conversion wizard. This wizard will update the XML behind the project and solution files to support features of the new IDE version.
If you absolutely positively cannot get both devs onto the same IDE version, there’s still hope. Have the 2012 developer open a new solution file in his copy, and pull in the 2008 projects. If VS asks to convert them, you’re SOL; the other dev will HAVE to upgrade, or the 2012 dev will have to revert. But, if the IDE doesn’t complain, the 2012 dev can save the new solution under a different name and work with the projects and their source code using that solution file, while the 2008 dev can continue to use the original one. Understand that as long as this state of affairs continues, the 2012 dev cannot use any features of C# 4.0/4.5, such as dynamic types, covariance/contravariance keywords, optional parameters/named arguments, async/await keywords, etc cannot be used in any source code that must remain usable by the 2008 dev. Language-wise, the 2012 developer is limited to C# 3.0, and the .NET Framework 3.5. This does not solve the problem of the 2008 dev not having access to code written from scratch by the 2012 dev in projects created by that IDE; he simply must upgrade to work in these parts of the codebase.