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
.