我有一个C#应用程序,它使用多个用户设置来存储其数据。当我增加应用程序的版本号时,这些设置将丢失并重置为其默认值。
这就是我实现以下代码的原因
if (Settings.Default.UpgradeRequired)
{
Settings.Default.Upgrade();
Settings.Default.UpgradeRequired = false;
Settings.Default.Save();
}
正如建议的here。
问题是:对Upgrade()的调用什么都不做。它不会抛出异常,但它也不会加载任何旧设置。之后每个设置仍然具有默认值。此外,我的新应用程序版本将其设置存储在新设置的文件夹旁边的新文件夹中。
我拿错了吗? ;-)
PS:我检查过一组旧的设置是否存储在磁盘上且值是否合理。因此,对于Upgrade(),肯定应该使用一些东西。
似乎我找到了解决方案。由于我的程序集名称/签名不强,每次更新我的应用程序时都会生成一个新的哈希。因此找不到旧设置,升级无效。
为了解决这个问题,我使用.snk文件签署了我的程序集。这样哈希现在保持固定,升级工作。