ConfigurationManager.OpenExeConfiguration - loads the wrong file?

user9659 picture user9659 · Jul 5, 2009 · Viewed 58.3k times · Source

I have added multiple app.config (each with a differet name) files to a project, and set them to copy to the output directory on each build.

I try and access the contents of each file using this:

System.Configuration.Configuration o = ConfigurationManager.OpenExeConfiguration(@"app1.config");

The code runs, but o.HasFile ends up False, and o.FilePath ends up "app1.config.config". If I change to code:

System.Configuration.Configuration o = ConfigurationManager.OpenExeConfiguration(@"app1");

Then the code bombs with "An error occurred loading a configuration file: The parameter 'exePath' is invalid. Parameter name: exePath".

If I copy/paste the config file (so I end up with app1.config and app1.config.config) then the code runs fine, however, I posit this is not a good solution. My question is thus: how can I use ConfigurationManager.OpenExeConfiguration to load a config file corretly?

Answer

user1697877 picture user1697877 · Sep 25, 2012

I can't remember where I found this solution but here is how I managed to load a specific exe configuration file:

ExeConfigurationFileMap map = new ExeConfigurationFileMap { ExeConfigFilename = "EXECONFIG_PATH" };
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);