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

时间:2015-01-30 11:36:25

标签: c# visual-studio

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

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

var x = Properties.Settings.Default.setting_name;

以下是基础设置文件路径的示例: -

  

C:\ Users \用户名\应用程序数据\本地\ COMPANY_NAME \ exe_name.vsh_Url_kxrjspzszls01bmlnkpeuf5cutfdioia \ 1.0.0.0

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

发生了什么事,是否有办法绕过它?

我也很担心,因为我们现有产品已经在现场销售,并且很快就会发布新版本。我很恐慌所有这些用户在升级时都会失去设置和偏好。

1 个答案:

答案 0 :(得分:0)

因此,基于网上发现的其他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,然后保存更改。在下次升级之后,标志的值将恢复为true,并且该过程将重复。