加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 修改装配/文件版本后保持用户设置

发布时间:2020-12-15 06:51:05 所属栏目:百科 来源:网络整理
导读:背景 我有一个简单的WinForms应用程序用C#编写.我讨论了部署解决方案一段时间,但最终决定放弃ClickOnce,因为其中的一些限制是至关重要的. 相反,我已经调整了一个简单的解决方案,通过程序集/文件版本(我保持它们同步)应用程序的属性版本化应用程序.我正在通过
背景
我有一个简单的WinForms应用程序用C#编写.我讨论了部署解决方案一段时间,但最终决定放弃ClickOnce,因为其中的一些限制是至关重要的.

相反,我已经调整了一个简单的解决方案,通过程序集/文件版本(我保持它们同步)应用程序的属性版本化应用程序.我正在通过安装项目(* .msi)进行部署.我将最新的汇编版本号存储在一个XML文件中,以及最新的安装文件.在运行时,我只需在线查看Application.ProductVersion对最新版本,如果有更新可以打开更新对话框.

问题
到目前为止,这已经很好,但是我最近注意到了这个方法的一个主要问题.当应用程序的版本更新时,AppData / Company / Product / Version / blahblahblah中将创建一个新版本的用户设置文件(user.config).这显然迫使用户重新设置新版本中的所有内容.

建议解决方案
我不知道如何进行.目前的应用程序目前只有1个版本,目前的用户群基本上是我可以乞求测试的用户,所以切换策略是没有什么大不了的.我考虑过:

1.)编写自己的设置系统,从而完全控制存储和使用设置文件的位置/方式.
2.)重新考虑我的版本/更新策略,以便更新不是基于程序集版本.我不知道我该怎么做,但我的测试似乎显示,即使构建和安装具有相同程序集版本的新版本仍然会破坏user.config.

我想我真的在问,如果有任何方法保留默认设置系统,因为它很容易使用,同时也适应我的部署策略.

解决方法

使用内置的“设置”类,只需要在更改应用程序版本时升级设置.以下是如何做到这一点:
在Settings.settings文件中,创建一个新的设置
UpdateSettings type = bool Scope = User Value = True

在使用任何设置之前,请包含以下代码(每次运行应用程序时都可以运行,因为这样可以更容易地在调试器中运行)

// Copy user settings from previous application version if necessary
if (MyApp.Properties.Settings.Default.UpdateSettings)
{
    MyApp.Properties.Settings.Default.Upgrade();
    MyApp.Properties.Settings.Default.UpdateSettings = false;
    MyApp.Properties.Settings.Default.Save();
}

当您的新应用程序版本运行时,UpdateSettings将具有默认值True,并且不会使用旧设置.如果UpdateSettings为真,我们会从旧设置升级设置,然后在新的应用程序版本下保存.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读