Возможно, я немного опоздал с игрой, чтобы найти решение для этого ответа, но вы можете включить свое свойство общих настроек в частичный класс в другом файле в проекте, чтобы конструктор настроек не переписывал любые пользовательские код, который вы добавляете.
В моем случае (с использованием VB.NET) я хотел сохранить Dictionary(Of String, String)
в My.Settings, за исключением того, что словарь нужно было сериализовать как двоичный, потому что его нелегко сериализовать в XML. Я удалил свойство настройки из конструктора, а затем добавил файл Settings.Extended.vb в свой проект со следующим кодом внутри:
'** Keeping My.Settings.FormLayouts out of Settings.Designer.vb so that this custom code is not overwritten by Visual Studio.'
Namespace My
Partial Friend NotInheritable Class MySettings
<Configuration.UserScopedSettingAttribute(), _
DebuggerNonUserCodeAttribute(), _
Configuration.SettingsSerializeAs(Configuration.SettingsSerializeAs.Binary)> _
Public Property FormLayouts() As Dictionary(Of String, String)
Get
Return CType(Me("FormLayouts"), Dictionary(Of String, String))
End Get
Set(ByVal value As Dictionary(Of String, String))
Me("FormLayouts") = value
End Set
End Property
End Class
End Namespace
Свойство FormLayouts все еще является частью My.Settings и будет загружаться и сохраняться как обычно, но добавление дополнительных настроек в конструкторе настроек приложения не приведет к перезаписи кода выше.