不要用 clickonce 覆盖 settings.settings 文件

Posted

技术标签:

【中文标题】不要用 clickonce 覆盖 settings.settings 文件【英文标题】:Do not overwrite settings.settings file with clickonce 【发布时间】: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 文件中。还是有其他方法,我做错了吗?

谢谢!

【问题讨论】:

【参考方案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 ***

【讨论】:

我应该在哪里嵌入这段代码在我的应用程序中,实际上我在运行应用程序之前把这段代码放在 Program.cs 中并且没有工作?!! 我有点在同一个地方@franchescototti。这看起来像一个优雅的解决方案,但我不知道把它放在哪里......

以上是关于不要用 clickonce 覆盖 settings.settings 文件的主要内容,如果未能解决你的问题,请参考以下文章

C# clickonce用处

Java - 不要用缓冲写入器覆盖

ClickOnce部署:自定义安全权限

Clickonce 未找到部署外部 dll 引用

一种ClickOnce应用程序在Windows7上安装时发生错误的解决办法

一种ClickOnce应用程序在Windows7上安装时发生错误的解决办法