10
votes

I'm using C# .NET 2.0 Windows Application.

and I'm using app.config for my Application Settings.

but change in AppSettings doesn't reflected runtime, it Needs Application to be restarted.

How can I avoid it.

Here is my code snippet I used to read and write the Application Settings.

I'm reading the Setting like this

string temp = ConfigurationManager.AppSettings.Get(key);

I'm updating the value like this where node is the current configuration/appSettings Node

node.Attributes["value"].Value = value;
xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
4

4 Answers

23
votes

You could try calling

ConfigurationManager.RefreshSection("appSettings")

I've just tested this and it does indeed work.

3
votes

Alternatively, you could create a singleton 'Options' to hold on to your application settings and perform your read/writes for you. Once loaded, changing the .config doesn't require reloading, you simply set a property on the singleton and call your .Save() method.

The 'runtime' version of your settings is in the singleton, no need to read from disk.

1
votes

Dont use ConfigurationManager to read settings, instead use:

        System.Configuration.ConfigurationManager.OpenExeConfiguration(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile).AppSettings.Settings["value"];
1
votes
ConfigurationManager.RefreshSection("appSettings");

works!!

But be careful that if we are in debug mode, the configuration file can be called xxxxx.vshost.exe.config, where xxxxx is your project name.