Изменение в AppSettings необходимо перезапустить мое приложение, как я могу избежать?

Я использую приложение Windows C# .NET 2.0.

и я использую приложение.config для настройки приложения.

но изменение в AppSettings не отражает время выполнения, ему необходимо перезапустить приложение.

Как я могу избежать этого.

вот мой фрагмент кода, я использовал для чтения и записи настроек приложения.

Я читаю настройки, как это

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

Я обновляю значение, как это, где узел текущая конфигурация / узел appSettings

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

4 ответов


вы можете попробовать позвонить

ConfigurationManager.RefreshSection("appSettings")
чтобы обновить раздел AppSettings файла с диска. После их обновления вы сможете прочитать новые значения.

Я только что протестировал это, и это действительно работает.


кроме того, вы можете создать одноэлементные "параметры", чтобы сохранить настройки приложения и выполнить чтение/запись для вас. После загрузки, изменение .config не требует перезагрузки, вы просто устанавливаете свойство на singleton и вызываете свой .метод Save.

версия "runtime" ваших настроек находится в синглтоне, нет необходимости читать с диска.


Не используйте ConfigurationManager для чтения настроек, вместо этого используйте:

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

ConfigurationManager.RefreshSection("appSettings");

работает!!

но будьте осторожны, если мы находимся в режиме отладки, файл конфигурации может быть вызван xxxxx.vshost.исполняемый.config, где xxxxx - это имя вашего проекта.