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

Pit*_*k76 3 c# clickonce app-config

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

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

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

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

谢谢!

Pit*_*k76 6

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

public static void UpgradeUserSettings()
{
  if (Settings.Default.upgradeRequired)
  {
    Settings.Default.Upgrade();
    Settings.Default.upgradeRequired = false;
    Settings.Default.Save();
  }
} 
Run Code Online (Sandbox Code Playgroud)

ApplicationSettingsBase.Upgrade方法MSDN

StackOverflow上的其他问题

  • 我应该在我的应用程序中嵌入这段代码,实际上我在运行应用程序之前将此代码放在 Program.cs 中,但没有工作?! (2认同)