I've two projects: UI (Winforms application) and Core (dll). Each project has to own its config file.
For example:
Core project (settings.config)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="environment" value="development"/>
    </appSettings>
</configuration>
UI project (app.config)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="skin" value="win"/>
    </appSettings>
</configuration>
From Core I read settings.config as:
System.Configuration.ConfigurationFileMap fileMap = new System.Configuration.ConfigurationFileMap("settings.config");
System.Configuration.Configuration configuration = System.Configuration.ConfigurationManager.OpenMappedMachineConfiguration(fileMap);
string environment = configuration.AppSettings.Settings["environment"].Value;
At this point crashes and dumps me that it's unable to cast System.Configuration.DefaultSection to System.Configuration.AppSettingsSection.
 
    