Windows phone 8,应用程序设置不支持
本文关键字:设置 不支持 应用程序 phone Windows | 更新日期: 2023-09-27 18:18:17
我有以下奇怪的行为在我的Windows phone 8, c#应用程序。
保存设置:
private void SaveProperty<T>(T property, string propertyName)
{
if (IsolatedStorageSettings.ApplicationSettings.Contains(propertyName))
IsolatedStorageSettings.ApplicationSettings[propertyName] = property;
else
IsolatedStorageSettings.ApplicationSettings.Add(propertyName, property);
IsolatedStorageSettings.ApplicationSettings.Save();
}
当应用程序运行时,我可以读取我存储在IsolatedStorageSettings.ApplicationSettings
中的所有设置。
但是当我重新打开我的应用程序(从应用程序列表中打开它),IsolatedStorageSettings.ApplicationSettings
-字典包含零(0
)键和值。
我错过了什么吗?
我使用了ISETool.exe来拍摄我的应用程序的IsolatedStorage的快照(感谢chepene)。我看到了这种行为:当我写设置(这意味着在SaveProperty<T>()
函数完成后),应用程序仍在运行时,我将设置保存在_ApplicationSettings
中。这与我的观察一致,当应用程序运行时,我可以从IsolatedStorageSettings.ApplicationSettings
中读取。_ApplicationSettings
-文件也存在,当墓碑或不运行(当我可以通过持有手机的后退键和访问它时,当应用程序用后退键关闭)。
但是当应用程序再次打开时(通过应用程序列表),_ApplicationSettings
-文件不见了…
我也看到,当我写一个文件到IsolatedStorage
:
SharedStorageAccessManager.CopySharedFileAsync(
Windows.Storage.ApplicationData.Current.LocalFolder, fileName+"orig",
Windows.Storage.NameCollisionOption.ReplaceExisting, fileID);
当我不读这个文件时,当我下次打开应用程序时,它就消失了。
顺便说一下,为了避免混淆:我是而不是每次打开应用程序都重新安装。
如果您需要更多的信息,请询问。
感谢您的帮助。
对于AppSettings,我在WP7/7.5上看到过类似的情况,但它只发生在我的property-value的类型是序列化器不知道的类时。
你确定没有例外吗?
- 在保存期间
- 在应用程序退出期间(因为应用程序可能会在此时转储设置)
- 在启动后应用程序第一次加载设置的时间内?
注意,这并不一定意味着应用程序崩溃。我的意思是,任何例外,那些内部沉默或用户处理。请检查VisualStudio的输出面板中的"第一次机会异常"日志。如果出现任何I/O或安全性或序列化异常,那么就在那里进行调查。如果我没记错的话,甚至还有一整套隔离存储异常,可以很容易地从debug/exceptions菜单中拦截。
然而,我遇到的未知或不可序列化类型的问题根本不能解释为什么额外的非appsettings文件会消失。
另一个想法:也许有一些额外的工具可以为你执行"干净部署"之类的操作?我记不清了,但是我认为VisualStudio的部署周期非常简单:
- 从设备中删除/卸载旧的应用程序-所以可能清除隔离存储
- 安装新应用到设备
所以,也许这就是原因?>
多亏了quetzalcoatl,我找到了解决方案:我将所有文件存储在我的应用程序的根文件夹中。在开始时,我读取所有文件(通过DataContractSerializer)并将其转换为我的模型。由于有时我的文件会损坏,我删除了抛出SerialzationException
的每个文件。但是,当我读取每个文件时,由于_ApplicationSettings
不可浇注到我的模型,我自动删除_ApplicationSettings
....所以我了解到ApplicationSettings只是根文件夹中的一个文件,我可以读取和删除它。因此,最重要的是永远不要写入根文件夹。