SettingsPropertyValue.SerializedValue does not recognize that serialized objects (as opposed to serialized primitives) may need to be saved.
ApplicationSettingsBase.Upgrade() does nothing. It should try to upgrade each of the Providers. Also, both Upgrade() and Save() should warn the world if they are compiled in a do-nothing mode (i.e., not implemented).
Suggested fix in PR #964
Fixed by https://github.com/mono/mono/pull/6272