Вот мое исследование на случай, если кому-то еще будет трудно перенести настройки, которые были изменены / удалены. Основная проблема заключается в том, 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 за публикацию отличной статьи по этому вопросу. Вы можете прочитать более подробную информацию об этом там.