这是仅针对某些用户才会出现的问题。每当我在Marketplace中发布我的应用程序的新版本时,我都会收到来自用户的电子邮件,说明应用程序中的所有设置都已丢失。
我自己无法重现这一点,而且我没有可以擦除IsolatedStorage的代码。
如果有人知道可能导致这种情况的任何人,那会很棒。
答案 0 :(得分:3)
更新:不确定以下内容是否适用于WP7应用 - 我会留在这里以防万一。我只针对普通应用尝试了这个。
您需要“升级”旧的设置文件。
您还需要知道何时需要执行此操作(即仅在安装新版本时)。
要知道何时需要升级设置,请在设置中添加一个名为(例如)NeedSettingsUpgrade的布尔值,并将其默认为true。
然后在Main()的开头附近调用以下函数:
/// <summary>Upgrades the application settings, if required.</summary>
private static void upgradeApplicationSettingsIfNecessary()
{
// Application settings are stored in a subfolder named after the full #.#.#.# version number of the program. This means that when a new version of the program is installed, the old settings will not be available.
// Fortunately, there's a method called Upgrade() that you can call to upgrade the settings from the old to the new folder.
// We control when to do this by having a boolean setting called 'NeedSettingsUpgrade' which is defaulted to true. Therefore, the first time a new version of this program is run, it will have its default value of true.
// This will cause the code below to call "Upgrade()" which copies the old settings to the new.
// It then sets "NeedSettingsUpgrade" to false so the upgrade won't be done the next time.
if (Settings.Default.NeedSettingsUpgrade)
{
Settings.Default.Upgrade();
Settings.Default.NeedSettingsUpgrade = false;
}
}
注意:您当然需要在程序退出前致电Settings.Default.Save()
,否则设置更改将不会保留。
答案 1 :(得分:2)
我的方法是使用程序集版本号作为升级的触发器。首次运行时,它将以v1.0和程序集版本号1.0.0.0所需的格式保存设置。发生升级时,会将保存的设置编号(1.0.0.0)与升级的程序集编号1.1.0.0进行比较,并确定需要升级。
我发现为visual studio进行重新部署并不保证升级,有时它会卸载,重新安装并不是那么好。所以我改为使用Windows Phone Powertools测试我的“升级”路径,因为它似乎可靠地进行升级。