Settings.Default.Upgrade()不保留当前设置

时间:2016-10-24 13:22:16

标签: c# settings upgrade

我有一个使用内置设置功能的WPF应用程序。当我发布新版本的应用程序时,我会增加程序集版本并在应用程序启动时执行以下代码:

if (Settings.Default.IsSettingsUpgradeRequired) //this defaults to true when a new version of this software has been released
            {
                Settings.Default.Upgrade(); //upgrade the settings to the newer version
                Settings.Default.Reload();
                Settings.Default.IsSettingsUpgradeRequired = false;
                Settings.Default.LastSettingsUpdate = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString();
                Settings.Default.Save();
            }

问题是以前的设置未得到维护。而是每次出现新版本时,都会在\ AppData \ Local \下创建一个新文件夹。因此,使用默认设置而不是先前版本的设置。我知道,在正常情况下,应该有一个包含许多子文件夹的文件夹,其中应用程序的版本作为名称。相反,我有很多文件夹,每个文件夹只包含一个文件夹,其中包含应用程序的版本名称。 Local \中的文件夹结构如下所示:

  • myApp.exe_Url_5s2axp5sywfyhblm3201qetpqnmwnvsc
  • myApp.exe_Url_ft4ih1ze0qsz5a​​bu11t334omxo1431c0
  • myApp.exe_Url_glsc2d3cjmswry2bxebb53jndfptav1x
  • myApp.exe_Url_qngn1rqmbfyy42fdgpmc3ystsaknuxnv
  • myApp.exe_Url_vqn0ogftrchl1fild5fe34hmijvmd2zr

那么如何阻止系统创建如此多的文件夹并使其仅为每个应用程序使用一个文件夹以便我可以正确升级我的设置?

编辑:我今天注意到的另一件事是,如果我更改应用程序文件夹的位置(让我们说它从桌面移动到C:\ myApp),应用程序会创建一个首次启动时的新设置文件夹。为什么系统不能将其识别为同一个应用程序?

2 个答案:

答案 0 :(得分:0)

项目->属性->应用程序->清单=使用默认设置嵌入清单

答案 1 :(得分:-1)

我终于开始工作了。我不知道desrcibed行为的原因,但这两件事之一解决了它:

  • 添加了默认清单文件并更改了“assemblyIdentity”节点(“版本”属性似乎对设置没有影响)
  • 激活Visual Studio的签名功能(项目属性 - >签名)