Get appSettings configSource from code

.net, appsettings, c#, config

Solution

I have some problems with this but I finally find an answer.

When config file looks like this:

<configuration>
  <appSettings file="appsettings.config"/>
</configuration>

The code above is working correctly:

var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var file = config.AppSettings.File;

But when config file is (it works same as above but syntax is different):

<configuration>
  <appSettings configSource="appsettings.config"/> <!-- configSource instead of file -->
</configuration>

I have to use following:

var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var file = config.AppSettings.SectionInformation.ConfigSource;

So I have to check if `config.AppSettings.SectionInformation.ConfigSource` and `config.AppSettings.File` is not an empty string and monitor correct one.

Problem

Is there a way to retrieve configSource from code? I founded How to programmatically retrieve the configSource Location from config file, but all answers are wrong. I have following config: ``` <configuration> <appSettings configSource="appsettings.config"/> </configuration> ``` When I tried to invoke following code: ``` var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); var file = config.AppSettings.File; ``` `file` is always empty. Same is for `ConfigurationManager.AppSettings["configSource"]`. I think something changed in .NET 4, because answers are old ones. I tried also `config.AppSettings.SectionInformation.ConfigSource` but it is also empty. I need this path to enable monitoring of `appSettings`. You could read more: How to discover that appsettings changed in C#?

Original source