I have on a single Windows Server about 10 different .NET projects, mostly .NET 4.0 but some .NET 2.0 

Some of these projects are asp.net, some are background utilities/services.

These projects interact with over a hundred different databases in our infrastructure. The ConnectionStrings they use to do that changes at least a few times a month.

The issue here is that forgetting to put a ConnectionString in one of these projects can cause a lot of problems, and new projects/updates are deployed to the server all the time by many different programmers.

My new attempt at a solution is to override the System.ConfigurationManager class in all projects and replace it with my own implementation that reads from a shared config file that I can maintain. Then I would just recompile each project once and deploy it.

I could also try to maintain the ConnectionStrings in the machine.config file that's shared between all projects, but I would have to do it for every version of the .NET framework used by a project which is at least three, and making a mistake in this file seems like it could be dangerous.

Does anybody have a recommendation of which way to proceed?

Thanks.