app.config не сохраняет значения - PullRequest
8 голосов
/ 12 января 2012

Мой 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); 
}

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

Ответы [ 3 ]

28 голосов
/ 12 января 2012

Когда вы отлаживаете с 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);
3 голосов
/ 12 января 2012

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

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

0 голосов
/ 12 января 2012

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

 config.AppSettings.Settings.Remove("foo");
 config.AppSettings.Settings.Add("foo", value);
 config.Save(ConfigurationSaveMode.Modified);
...