【发布时间】:2017-03-06 07:13:24
【问题描述】:
我有一个使用内置设置功能的 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_ft4ih1ze0qsz5abu11t334omxo1431c0
- myApp.exe_Url_glsc2d3cjmswry2bxebb53jndfptav1x
- myApp.exe_Url_qngn1rqmbfyy42fdgpmc3ystsaknuxnv
- myApp.exe_Url_vqn0ogftrchl1fild5fe34hmijvmd2zr
那么如何阻止系统创建如此多的文件夹并使其每个应用程序只使用一个文件夹,以便我可以正确升级我的设置?
编辑:我今天注意到的另一件事是,如果我更改应用程序文件夹的位置(假设将其从桌面移动到 C:\myApp),应用程序会在以下时间创建一个新的设置文件夹第一次开始。为什么系统不能识别为同一个应用程序?
【问题讨论】:
-
我没有在用于更新设置的代码中使用
Reload(),它工作正常。尝试删除它。 -
已经试过了,没有任何改变。问题是系统会为每个软件版本创建一个新的应用程序文件夹,就好像它没有识别出它是同一个应用程序一样......
-
也许它与有/没有清单文件有关?还是我可能必须签署申请?
-
你是如何添加 IsSettingsUpgradeRequired 的?