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