Файл настроек в Win Form App, Лучшая практика - PullRequest
3 голосов
/ 03 сентября 2011

У меня есть приложение Win Form, которое хранит некоторые настройки для каждого пользователя в файле UserSettings.Settings. До сих пор это работало хорошо, однако кажется, что файл настроек «сбрасывается», когда я выпускаю обновление. Что я делаю через ClickOnce.

Это ожидаемое поведение?
Могу ли я контролировать, перезаписываются ли поля в файле настроек?
Есть ли лучший способ хранить настройки пользователя?

Спасибо

Ответы [ 4 ]

4 голосов
/ 06 сентября 2011

Когда вы выпускаете обновление, ваше обновленное приложение должно вызвать ApplicationSettingsBase.Upgrade Method , чтобы переместить значения из предыдущей версии.Вот похожий вопрос: Автоматически «обновить» пользовательские настройки из предыдущей версии файла app.config?

Имейте в виду, что вы должны вызывать вышеупомянутый метод только один раз, поэтому вам, вероятно, придется сохранить, уже вызвали ли вы Upgrade или нет в настройках, и сделать что-то вроде этого:

if(!Settings.Default.Upgraded)
{
   Settings.Default.Upgrade();
   Settings.Default.Upgraded = true;
   Settings.Default.Save();
}

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

2 голосов
/ 03 сентября 2011

Где вы сохраняете файл .Settings?Вероятно, его не следует включать в каталог установки вместе с исполняемым файлом.Попробуйте переместить его в каталог данных приложения пользователя:

http://blog.kowalczyk.info/article/Getting-user-specific-application-data-directory.html

Удачи!

1 голос
/ 06 сентября 2011

Вы просто используете встроенные Настройки приложения с ClickOnce?

Если это так, вам просто нужно установить Scope на User в редакторе настроек, и настройка будет объединена при обновлении, как описано здесь

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

0 голосов
/ 06 сентября 2011

В Windows Vista / 7 он сохраняется в:

C:\Users\USERNAME\AppData\Local\MANUFACTURER_NAME\

и

C:\Users\USERNAME\AppData\Roaming\MANUFACTURER_NAME\

Я уверен, что он также сохраняется в данных приложения под xp.

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

...