microsoft-metro - 更改 WinRT 应用程序的应用程序 list 会破坏应用程序数据

标签 microsoft-metro windows-runtime

在我的 WinRT 应用程序中,我将用户数据(不是 session 数据)存储在本地文件中。该文件通过 ApplicationData.Current.LocalFolder 保存和加载。

每次我对应用程序 list 进行细微更改时,这些保存的文件和应用程序设置都会在应用程序启动时失效并删除。 这是否仅在开发环境中如此,还是在应用程序商店中发布包时也会发生这种情况?

如何防止系统执行此操作?如果因为版本更改而丢失数据,用户会非常不高兴!

更新 1:
感谢 Hans Passant,我也了解到 data files have a Version .设置数据文件版本已修复版本更改(仅增量)的问题,但未修复 list 更改的其余部分。

更新 2:
与此同时,我还观察到,不仅改变应用 list 的属性会产生这种影响。如果我为新语言(本地化)添加新资源文件,数据也将被删除。很高兴知道这种奇怪的行为是否也存在于通过商店发布的已安装应用程序中。

最佳答案

我的问题的答案似乎并不那么容易。最终我观察到它可能包含两个不同的问题。在网上我发现只有非常little Information ,因此我在这里写的所有内容都带有一点推测性,基于我所做的一些简单测试。

版本变更
感谢 Hans Passant,我了解到数据文件可能有 version .由于缺少文档,我做了如下版本测试和版本设置:

await ApplicationData.Current.SetVersionAsync((uint)1, (setVersionRequest) => { });

该代码在我加载数据文件之前随时执行。因为我目前没有更改文件格式,所以我将更改回调留空 {} .
插入上述代码后,版本更改在更改版本属性时不再删除我的应用程序数据。但是,作为测试,我之后删除了代码,出乎意料的是,任何版本更改都不再删除应用程序数据文件!也许是因为它们现在是版本化的。 (附带说明:减少版本总是会导致数据文件丢失)。

一般 list 更改
更改 list 的属性(Version-properties 除外)删除数据的影响 还没走 .例如,如果我更改应用程序的描述,则所有数据都将被删除。我找了一些帖子猜测这不会发生在商店,但我没有找到任何证据。

添加语言
我观察到的另一个效果是,如果我向应用程序添加一种新语言(添加资源文件),也会产生同样的效果。

请注意:以上所有解释均基于我对开发环境的观察。我没有找到任何具体的文档,因此我建议每个人都很好地测试相关用例,以免让您的客户非常不高兴。可能在几个月后,会有更具体的文档可用。

关于microsoft-metro - 更改 WinRT 应用程序的应用程序 list 会破坏应用程序数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12317507/

相关文章:

c# - PointerMoved 事件未触发

c++ - 如何在 Windows Phone 8 中获取程序包名称

visual-studio - 将所有图像添加到 Package.AppXManifest 会导致编译器警告

c# - 将输入保存到文本文件 Metroapp

windows - 为 Metro 和桌面开发 Windows 8 应用程序

wcf - 更新开发者许可证后出现错误。无法连接到 WCF 服务

xaml - C#/XAML Metro 应用程序中的 DatePicker 控件?

c# - 如何使用C#将自定义对象保存到Windows Phone上的sqlite中?

windows - 从 PowerShell 启动 WinRT 应用程序

c# - 如何禁用 Windows 8 中的纵向模式?