用户设置 - 每个应用程序版本的不同位置?

User settings - different location for each application version?

我正在开发一个应用程序来保存各种用户设置(例如 window 位置、选项、首选项)。这是使用语法

完成的
Properties.Settings.Default.setting_name = "xxx";
Properties.Settings.Default.Save();

var x = Properties.Settings.Default.setting_name;

下面是底层设置文件路径的示例:-

C:\Users\user_name\AppData\Local\company_name\exe_name.vsh_Url_kxrjspzszls01bmlnkpeuf5cutfdioia.0.0.0

问题是每次我构建和发布软件的新版本时,用户都会丢失他们的设置。这大概是因为应用程序 exe 版本号被包含在文件路径中,所以每次安装新版本时它都会从一个新的空设置文件夹开始?幸运的是我们还处于开发阶段,所以目前只有几个内部用户。

这是怎么回事,有解决办法吗?

我也很担心,因为我们有一个现有的产品,并且很快就会发布一个新版本。我很担心所有这些用户在升级时都会丢失他们的设置和偏好。

因此,基于在网络上找到的其他 SO 问题和文章,我编写了这个我现在在应用程序启动期间调用的简短方法:

    private static void CheckForUserSettingsUpgrade()
    {
        if (!Properties.Settings.Default.UserSettingsUpgradeRequired)
        {
            return;
        }

        Properties.Settings.Default.Upgrade();
        Properties.Settings.Default.UserSettingsUpgradeRequired = false;
        Properties.Settings.Default.Save();
    }

为此,必须有一个名为 UserSettingsUpgradeRequired 的用户范围设置,默认值为 True

升级后(导致创建新的设置文件)此设置的值当然会是 true。在这种情况下,上面的代码将从以前的设置文件(如果有)导入所有设置,将此升级标志设置设置为 false,然后保存更改。下一次升级后,flag 的值将恢复为 true,并重复该过程。