Я понял, что могу сохранить пользовательские настройки из предыдущих версий, используя такой код:
if (Settings.Default.UpgradeRequired)
{
Settings.Default.Upgrade();
Settings.Default.UpgradeRequired = false;
Settings.Default.Save();
}
Однако это не сработает, если я изменю свойство роуминга настройки. Есть ли способ сделать так, чтобы значения настроек переносились, а не сбрасывались, когда я изменяю настройку с роуминга на локальную или наоборот?
РЕДАКТИРОВАТЬ: я рассмотрел возможный способ обновления параметров роуминга до локальных параметров с помощью файла GetPreviousVersion()
, но он не работает, потому что, если предыдущая версия параметра перемещалась, а текущий параметр не перемещался, предыдущая версия не возвращается. вообще.
Чтобы воспроизвести:
- Сделайте настройку с именем MySetting.
- Измените свойство Roaming MySetting на
true
. - Убедитесь, что область действия MySetting равна
User
. Запустите следующий код:
Console.WriteLine(Settings.Default.GetPreviousVersion("MySetting")); Settings.Default.MySetting = "Not the default value."; Settings.Default.Save();
- Увеличьте версию сборки.
- Запустите код еще раз, заметив, что выводится новое значение.
- Измените свойство Roaming MySetting на
false
. - Снова увеличьте версию сборки.
- Запустите код еще раз, заметив, что выводится значение по умолчанию.