Вот мое исследование на случай, если кому-то еще будет трудно перенести настройки, которые были изменены / удалены. Основная проблема в том, что GetPreviousVersion()
не работает, если вы переименовали или удалили параметр в новой версии вашего приложения. Поэтому вам нужно сохранить настройку в своем классе Settings
, но добавить к ней несколько атрибутов / артефактов, чтобы вы случайно не использовали ее в коде в другом месте, что делает его устаревшим. Пример устаревшей настройки в VB.NET будет выглядеть следующим образом (может быть легко переведен на C #):
<UserScopedSetting(),
DebuggerNonUserCode(),
DefaultSettingValue(""),
Obsolete("Do not use this property for any purpose. Use YOUR_NEW_SETTING_NAME instead."),
NoSettingsVersionUpgrade()>
Public Property OldSettingName() As String
Get
Throw New NotSupportedException("This property is obsolete")
End Get
Set
Throw New NotSupportedException("This property is obsolete")
End Set
End Property
Убедитесь, что вы добавили это свойство в то же пространство имен / класс, в котором находятся настройки вашего приложения. В VB.NET этот класс называется MySettings
и доступен в My
пространстве имен. Вы можете использовать частичную функциональность класса, чтобы предотвратить смешивание устаревших настроек с текущими настройками.
Полная благодарность jsharrison за публикацию превосходной статьи об этой проблеме. Подробнее об этом можно прочитать там.