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

时间:2013-01-18 14:24:37

标签: c# clickonce app-config

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

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

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

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

THX!

1 个答案:

答案 0 :(得分:6)

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

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

ApplicationSettingsBase.Upgrade Method MSDN

other question on StackOverflow