app.config не сохраняет значения

Мой App.Config выглядит примерно так:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <appSettings>
  <add key="foo" value=""/>
</appSettings>
</configuration>

Я пытаюсь сохранить значение foo следующим способом:

private void SaveValue(string value) {
    var config =
        ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    config.AppSettings.Settings.Add("foo", value);
    config.Save(ConfigurationSaveMode.Modified); 
}

но это не меняет его ценности. и у меня нет исключения. как это исправить? заранее спасибо!


person Jack    schedule 12.01.2012    source источник
comment
Вот полный пример ConfigurationManager.OpenExeConfiguration Method (ConfigurationUserLevel)   -  person DmitryBoyko    schedule 12.01.2012


Ответы (3)


При отладке с помощью Visual Studio, вероятно, изменяется <yourexe>.vshost.exe.config вместо <yourexe>.exe.config. Когда вы создаете приложение в режиме выпуска, существует только <yourexe>.exe.config, который будет обновлен.

Ваш код также добавит дополнительный узел в файл конфигурации. Используйте что-то вроде приведенного ниже кода, чтобы обновить настройку:

var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings["foo"].Value = "text";     
config.Save(ConfigurationSaveMode.Modified);
person RBDev    schedule 12.01.2012
comment
Большое спасибо за ваш ответ! Работал нормально. :) - person Jack; 13.01.2012

App.config копируется в выходную папку при сборке с именем <yourexe>.exe.config. Это фактический файл конфигурации, который загружается и сохраняется во время выполнения.

Загляните в свою выходную папку, вы, вероятно, обнаружите, что файл конфигурации содержит ваши изменения.

person driis    schedule 12.01.2012
comment
это именно то, что я вижу. там никаких изменений. - person Jack; 12.01.2012

Попробуйте сначала удалить старое значение, а затем добавить его снова.

 config.AppSettings.Settings.Remove("foo");
 config.AppSettings.Settings.Add("foo", value);
 config.Save(ConfigurationSaveMode.Modified);
person Haris Hasan    schedule 12.01.2012