I recentely started doing all my development work in Virtual Machines. I have one optimized for web-development, another for windows development, and a couple more for special cases. This approach has a lot of advantages, but one of the real problems I experienced in maintaining this infrastructure was syncing my develoment settings across these machines. At one point I was spending more time configuring and maintaining my Vm's than doing my actual programming work :).
At work we started experiencing simular problems. Coding guidelines were not maintained, developers came asking me how I got my Resharper reacting the way it did, and when helping someone I first had to get a 101 about how the guy's visual studio was configured and how I had to operate it. In short, a lot of problems we could fix if we had an easy way of syncing VS & Resharper settings across computers.
I looked into Resharper first and was pleased to find out that the guys over at JetBrains already worked out a solution for this problem: Hierarchical layered Settings! And they actually work really well.
By default you'll find the following layers:
I'm not going to explain how they all work (the names are also kinda self-explanatory ;)), the guys over at JetBrains already did a really good job on their technical blog: Save or Save To in ReSharper Options
Interesting for our problem are the 'Solution team-shared' settings. All changes stored in this layer will automatically be saved into a file that is stored next to the projects solution file. This can be checked into source control for new machines or saved for new projects a long the way.
One thing to remind though is that Resharper will not save changes into this layer by default. Changes have to be made manually into the Resharper option screen (Resharper > Option) and saved using the 'Saved to' button where the appropriate layer can be chosen.
After Resharper I looked into the VS Settings. (Okay, I actually knew this already, but I'll add it for the sake of completeness :)).
In Visual Studio you can Export and Import the Development settings using the menu 'Tools' > 'Import and Export settings...'. By following the wizard you can select the settings you mean to share across computers and export those to a file. I Normally do not check this file into source control, but that is offcourse for you to decide.
And tataaaaa, no more excuses for not following the coding guidelines :) !