Почему настройки моего приложения не сохраняются? - PullRequest
12 голосов
/ 28 июня 2009

Итак, у меня есть некоторые настройки, относящиеся к области действия user , но по какой-то причине они не сохраняются в файле .exe.config. Я делаю следующее:

Properties.Settings.Default.Email = "new@value.com";
Properties.Settings.Default.Save();

Тем не менее, я смотрю на файл настроек в папке отладки, и он по-прежнему установлен по умолчанию в Visual Studio. Я делаю это неправильно?

Ответы [ 3 ]

18 голосов
/ 28 июня 2009

Если ваша информация о сборке настроена на автоматическое создание любых номеров версий (1.0. *), То при каждой отладке вашего приложения номер версии будет отличаться, и каждый раз будет создаваться новый файл.

В этом случае вам необходимо выполнить обновление файла настроек:

Properties.Settings.Default.Upgrade()

Вы также можете установить значение от NeedsUpgrading до true по умолчанию и установить его в значение false после выполнения обновления, чтобы конечные пользователи, которые не меняют номера версий при каждом запуске приложения, не будут обновлять все время

18 голосов
/ 28 июня 2009

Пользовательские настройки зависят от пользователя, поэтому они не будут сохранены в файле .exe.config, который является системным.

Из документов LocalSettingsProvider:

Настройки области приложения и пользовательские настройки по умолчанию хранится в файле с именем application.exe.config, который является созданный в том же каталоге, что и запускаемый файл. заявка Настройки конфигурации доступны только для чтения. Конкретные пользовательские данные хранятся в файле с именем username.config, хранится в домашний каталог пользователя.

Таким образом, для приложения UserSettingsTest, запускаемого из VS под отладчиком (отсюда и бит vshost), я получил путь:

C:\Users\Jon\AppData\Local\UserSettingsTest
  \UserSettingsTest.vshost.e_Url_pdqoppugkz1vaawbhwkkcu5ibxpi2fgu
  \1.0.0.0\user.config
0 голосов
/ 28 июня 2009

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

Вы можете просмотреть эти папки, нажав «Синхронизировать» в диалоговом окне «Настройки приложения».

В Vista обычно:

  • C: \ Users [CurrentUser] \ AppData \ Local [CompanyName] [AppName] \ версия
  • C: \ Users [CurrentUser] \ AppData \ Roaming [CompanyName] [AppName] \ версия

Сделано таким образом, поскольку настройки связаны с текущим пользователем и UAC . В Vista вы также можете видеть, что настройки всего приложения не сохраняются в файле конфигурации.

[CompanyName] и [ProductName] определяются настройками вашей информации о сборке.

...