【问题标题】:Getting settings from an old version从旧版本获取设置
【发布时间】:2016-10-15 19:35:17
【问题描述】:

我有一个 Winforms 应用程序,它有很多设置(.settings 文件)。这些(据我所知)保存在C:\Users\[User's username]\AppData\Local\[My program name]\[Build or something]\1.0.0.0\user.config 中,但是每当我进行新构建并且用户运行该版本时,它都会创建一个新的[Build or something] 文件夹并以“新设置”的设置重新开始。滚动以前版本的设置的最佳做法是什么?

(我希望每次运行新版本时都“全新”的一些设置,以及我希望从上一个版本复制的一些设置)

【问题讨论】:

  • 可以将设置内容移植到单个 .Config 文件中吗..?

标签: c# winforms settings.settings


【解决方案1】:

我正在使用这篇文章中描述的方法(它说 Clickonce,但它也适用于其他类型的应用程序):https://blogs.msdn.microsoft.com/rprabhu/2005/06/29/client-settings-faq/

问:好的,但是我怎么知道什么时候调用 Upgrade?​​p>

答:好问题。在 Clickonce 中,当您安装应用程序的新版本时,ApplicationSettingsBase 将检测到它并在加载设置时自动为您升级设置。在非 Clickonce 的情况下,没有自动升级 - 您必须自己调用升级。这是确定何时调用 Upgrade 的一种想法:

有一个名为 CallUpgrade 的布尔设置,并给它一个默认值 true。当您的应用启动时,您可以执行以下操作:

   if (Properties.Settings.Default.CallUpgrade) {
      Properties.Settings.Default.Upgrade();
      Properties.Settings.Default.CallUpgrade = false;
   }

这将确保仅在部署新版本后应用程序第一次运行时调用 Upgrade()。

【讨论】:

  • 是的,我的程序中还有一个“checkFirstRun()”方法。我可以把它放在那里。现在,我有几个问题:如果我打电话给Properties.Settings.Default.Upgrade();,它会升级所有设置吗?如果我在新版本中的设置比在旧版本中的设置多,这些设置会保持不变吗?
  • post 说:“只需调用 ApplicationSettingsBase.Upgrade(),它就会从先前版本中检索与当前版本的类匹配的设置,并将它们存储在当前版本的 user.config 文件中。”所以是的,您的新设置将保持不变
猜你喜欢
  • 2020-10-23
  • 1970-01-01
  • 2016-05-08
  • 1970-01-01
  • 1970-01-01
  • 2020-08-20
  • 1970-01-01
  • 1970-01-01
  • 2015-03-01
相关资源
最近更新 更多