Qualche giorno fa scrissi della possibilità di frammentare il file di configurazione in più parti. Oggi vorrei estendere il concetto proponendo un'ulteriore alternativa. Come posso leggere un file di configurazione in una locazione qualunque del mio file system (purchè il processo abbia i privilegi per leggerlo) senza seguire la naming convention (*.config) di .NET?

Ci possiamo appoggiare alla classe ExeConfigurationFileMap la quale permette di definire dove si trova il file di configurazione in modo del tutto arbitrario:

ExeConfigurationFileMap confFile = new ExeConfigurationFileMap();
confFile.ExeConfigFilename = @"C:\\MiaConfigurazione.xml";
Configuration conf = ConfigurationManager.OpenMappedExeConfiguration(confFile, ConfigurationUserLevel.None);
Console.WriteLine(conf.AppSettings.Settings["test"].Value);

L'unico vincolo è che il file di configurazione deve mentenere una struttura (soddisfare lo schema) standard dei files .config.