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

104
11

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

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

спросил(а) 2012-01-12T22:13:00+04:00 8 лет, 1 месяц назад
1
Решение
70

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

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

ответил(а) 2012-01-12T22:17:00+04:00 8 лет, 1 месяц назад
183

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


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

var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings["foo"].Value = "text";
config.Save(ConfigurationSaveMode.Modified);

ответил(а) 2012-01-12T22:52:00+04:00 8 лет, 1 месяц назад
35

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


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

ответил(а) 2012-01-12T22:17:00+04:00 8 лет, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема