不要使用clickonce覆盖settings.settings文件

起初我在appSet配置下的app.config文件中存储了一些用户定义的设置。 这些是用户在运行时可以更改的属性。 我遇到的第一个问题是当我使用ClickOnce部署我的应用程序时,它会覆盖app.config文件并且用户丢失了他的个人设置。

然后我将属性移动到settings.settings文件(= app.config中的usersettings部分),因为我在互联网上发现,使用ClickOnce部署时不会覆盖此部分。 不,它确实.. Settings.Settings属性是:

  • 构建动作=内容
  • 复制到=不复制

那么如何在app.config文件或settings.settings文件中完成我的用户的个人设置。 还是有另一种方式,我做错了吗?

谢谢!

使用ClickOnce部署新版本的应用程序时,此方法将复制先前安装的设置。 因此,用户所做的任何用户定义设置都将被复制,因此在更新后可用。 我测试了它,它对我有用。

public static void UpgradeUserSettings() { if (Settings.Default.upgradeRequired) { Settings.Default.Upgrade(); Settings.Default.upgradeRequired = false; Settings.Default.Save(); } } 

ApplicationSettingsBase.Upgrade方法MSDN

StackOverflow上的其他问题