26

每次我编译我的应用程序并且版本号发生变化(我有一个自动递增的内部版本号)时,我都会丢失用户配置的 app.config 设置,因为它们存储在特定版本的 AppData 文件夹中。从本质上讲,就用户设置而言,我的应用程序的每个版本都是从头开始的。

虽然这在开发中是一个轻微的烦恼,但当我接近部署/发布时它提出了一个问题 -如果我使用 app.config 来存储我的用户设置,用户的个性化设置是否会在每次安装更改版本的补丁时被冲洗掉我的应用程序编号?如果是这样,是否有一种简单的方法可以从以前的版本“升级”设置?我知道在注册表中使用 HKCU 是另一种选择,但我喜欢 My.Settings 命名空间的易用性,并且我想继续使用 app.config。

另一个 SO question提出了类似的问题,尽管答案似乎并不那么清楚。将我的 MSI 设置为要求用户升级是否足以保留这些用户级设置?

4

3 回答 3

41

你看过ApplicationSettingsBase.Upgrade()吗?它允许使用以下调用从以前的版本升级设置:

My.Settings.Upgrade()
于 2009-07-30T08:11:28.577 回答
7

不知道为什么,但升级命令或获取以前的版本似乎都不适合我。我可能做错了什么?我是否需要调用刷新命令之类的。我在表单加载时这样做,它应该是一个应用程序事件吗?

更新

找出原因,当您使用 4 位主要版本号时,它似乎不起作用。我使用 2012 年作为主要版本号。我已将其更改为 12,它就像一个魅力,虽然不是不符合千年标准。我还有 88 年才需要开始担心这个问题!

于 2012-10-17T09:41:30.603 回答
1

您是否考虑过 ClickOnce 部署?然后深入讨论这个主题。IMO,ClickOnce 对开发人员和用户来说都更容易。

于 2009-07-29T06:56:43.553 回答