UWP中的应用程序数据版本

UWP中的应用程序数据版本,uwp,Uwp,我有一个空白的UWP应用程序,我在ApplicationData中写了一些设置,当我增加我的包版本时,我的ApplicationData版本没有改变。 另一个问题是,当我使用SetVersionAsync方法设置AppData版本时,在我从myAppData读取设置之后,它会读取最新的设置,而我希望不会读取最新的设置,因为版本不同。 有人能告诉我为什么吗?我认为您没有正确地进行应用程序数据版本控制。包版本和应用程序数据版本之间没有直接关联。应用程序数据版本控制的要点是允许在应用程序版本之间更改应

我有一个空白的UWP应用程序,我在ApplicationData中写了一些设置,当我增加我的包版本时,我的ApplicationData版本没有改变。 另一个问题是,当我使用SetVersionAsync方法设置AppData版本时,在我从myAppData读取设置之后,它会读取最新的设置,而我希望不会读取最新的设置,因为版本不同。
有人能告诉我为什么吗?

我认为您没有正确地进行应用程序数据版本控制。包版本和应用程序数据版本之间没有直接关联。应用程序数据版本控制的要点是允许在应用程序版本之间更改应用程序数据的格式

这是典型的情况:

  • 在应用程序的第一个版本中,您只需将数据保存到应用程序数据中,而不必注意版本。隐式地将版本设置为
    0
    。您可以一直这样做,直到需要更改正在保存的数据的格式为止
  • 当您最终需要更改存储数据的格式时,您将开始关注应用程序数据的版本。首先检查
    ApplicationData.Version
    的值。如果其值为
    0
    ,则将使用旧代码加载数据。完成后,将调用
    ApplicationData.SetVersionAsync
    ,将版本设置为
    1
    ,并根据新格式将加载的数据保存在处理程序中。下次加载应用程序时,应用程序数据版本将为
    1
    ,您将使用新代码加载它
  • 每次都要重复此过程,您需要更改格式,增加应用程序数据版本(通常为1)。您将始终需要支持加载所有旧版本的应用程序数据,因为用户可能在最后尝试使用最新版本加载数据之前,已经使用应用程序的任何早期版本保存了数据。加载数据后,您将始终以最新格式保存数据,方法是使用应用程序数据版本的最新值调用
    ApplicationData.SetVersionAsync

  • 这个API没有很好的文档记录,表面上看起来设计得很糟糕。首先,为什么需要将版本设置为具有处理程序的异步操作?谁给处理者打电话,什么时候?每当保存设置时,ApplicationData是否会调用它?其次,假设版本0设置包含序列化类,这些类在版本1中已更改。如何反序列化版本0类,以便将它们转换为版本1?您是否必须编写自定义反序列化程序或包含旧类反序列化目的?