【问题标题】:Do not overwrite settings.settings file with clickonce不要用 clickonce 覆盖 settings.settings 文件
【发布时间】:2013-01-02 06:46:57
【问题描述】:

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

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

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

那么,我怎样才能做到不覆盖我的用户的个人设置,无论是在 app.config 文件还是在 settings.settings 文件中。还是有其他方法,我做错了吗?

谢谢!

【问题讨论】:

    标签: c# clickonce app-config


    【解决方案1】:

    当使用 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

    【讨论】:

    • 我应该在哪里嵌入这段代码在我的应用程序中,实际上我在运行应用程序之前把这段代码放在 Program.cs 中并且没有工作?!!
    • 我有点在同一个地方@franchescototti。这看起来像一个优雅的解决方案,但我不知道把它放在哪里......
    猜你喜欢
    • 2010-09-20
    • 2010-10-05
    • 1970-01-01
    • 2013-05-12
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    相关资源
    最近更新 更多