С# - конфигурация приложения не изменяется
Я хочу сохранить некоторые настройки в файле конфигурации для будущего использования.
Я пытаюсь использовать обычный код, который я вижу во всех учебниках -
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings["username"].Value = m_strUserName;
// I also tried -
//config.AppSettings.Settings.Remove("username");
//config.AppSettings.Settings.Add("username", m_strUserName);
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
Теперь - я вижу, что во время выполнения - файл "... vshost.exe.config" в папке "Отладка" изменяется, гайка при закрытии приложения - все изменения удаляются.
Что я могу сделать?
Ответы
Ответ 1
Чтобы проверить, используя обычный файл конфигурации exe, отмените флажок "Включить процесс хостинга Visual Studio" на вкладке "Отладка" в меню свойств проекта. Это заставит визуальную студию больше не использовать файл vshost.exe
для запуска, и будет использоваться правильный файл конфигурации.
![enter image description here]()
Ответ 2
При развертывании приложения для ваших конечных пользователей нет vshost.config.
Ваши изменения будут применены к реальному exe.config. Поэтому вам не нужно беспокоиться об этом.
Когда вы создаете приложение в сеансе отладки, файл app.config, присутствующий в вашем проекте, копируется в выходной каталог. Затем этот файл конфигурации копируется также в файл vshost.config. Таким образом, содержимое app.config перезаписывает любые изменения, сделанные во время сеанса отладки в файле vshost.exe.config.
Однако позвольте мне сказать, что писать такую информацию в конфигурацию приложения - это плохая практика. Файл конфигурации должен использоваться только для хранения постоянной конфигурации, которая обычно не изменяется в течение всего срока службы вашего приложения. Например, параметры подключения являются достоверной информацией для хранения там, потому что вы обычно не меняете их, и вы не хотите их жестко кодировать.
Настройки, такие как имя пользователя, должны использовать user.config. Эта конфигурация предназначена для каждого пользователя/для каждого приложения и допускает доступ для чтения/записи.