As of .NET 2.0 Microsoft introduced significant new configuration capabilities into the .NET Framework. This made building configuration into your application significantly simpler. For backwards compatibility reasons the previous configuration support was retained. This was necessary so applications from previous versions could run on the new framework.
 
The new functionality has the ability to generate configuration files by building a configuration object graph then saving it out. This seemed like quite a useful capability for a tool I'm constructing to generate configuration files. Unfortunately configuration code that uses the pre .NET 2.0 system uses an interface (IConfigurationSectionHandler) that is (as far as I can tell) one way only. This leaves me with no way to construct a configuration object that will generate the correct configuration output.
 
I'm now left with the option of generating the configuration file as an XML document. This will work but it's going to require more effort, especially to validate the output. The thing is, if I was in Microsoft's position I would have made exactly the same choice. Generating configuration is a rare case for which there are alternatives. Breaking the existing configuration system would have broken a serious percentage of existing .NET applications. Such applications they could continue to run on the 1.1 version of the framework but it would have been significantly more effort to upgrade them to 2.0.
 
I'm still going to wish for a perfect world where I don't have this problem. I'm just not expecting to see it any time soon.