Frequently I need to create a .Net class library that requires an app.config for things such as database connection strings. However, these settings must be in the calling a
You could create your own XML file(call it appConfig.xml or something if you want), use System.Xml instead of System.Configuration to read it, and include it alongside your dll.
Here is an alternative.
Instead of attempting to find ways to "merge" your app.configs, or even placing configuration items in your DLL (and trying to work around what is "by design") in the first place, try this:
Create your DLL, but where you need a Config Item, create a public Property. When you instantiate the class in the DLL, you populate these properties with config items from the owning application.
Now the configuration is managed at the owner level, and the DLL is portable, as you have to pass what you need to it at run time.
No more DLL.config!
If you're using NUnit, name your app.config file with the same name as your *.nunit project filename. So for example, if you called your project "ClassLibraryA.nunit", then name your class library configuration file "ClassLibraryA.config". They also need to reside in the same folder/directory. NUnit is actually using this as the main configuration file.
If you have custom code, then you need to make sure your app.config (or web.config) is referencing the class library's app.config file. The application only cares about the root app.config or web.config. So you need to add a custom configuration section that points to the class library app.config.