簡體   English   中英

如何在文件版本更改中保留 .settings/.config 文件中的更改?

[英]How to persist changes in a .settings/.config file across a file version change?

我創建了一個應用程序,它使用 settings.settings 來存儲一些用戶特定的設置 (scope=User)。 設置在啟動時正確加載,在使用過程中更改並正確保存以備下次啟動。 這個循環似乎沒有問題。

當我為新版本更新程序集和文件版本時,問題就出現了。 啟動時不再加載設置(而是使用默認值)。 即使啟動了 1.2 版並且生成並保存了新的配置文件,從 1.1 版保存的配置文件似乎也將持續存在(即您可以重新啟動 1.1 版,配置文件將是從該版保存的配置文件)版本)。

因此,這些設置似乎特定於程序集和/或文件的版本。 還值得注意的是,在 1.1 版和 1.2 版之間,settings.settings 文件或其他任何內容都沒有更改(即我在這些不同版本之間所做的唯一更改是修改了版本號)。

有沒有辦法跨版本更改保留這些設置?

幾點說明:

您必須調用ApplicationSettingsBase派生類的Upgrade方法(通常稱為Settings並由 Visual Studio 為您創建):

Properties.Settings.Default.Upgrade();

何時/何地調用Upgrade方法? 您可以應用一個簡單的技巧:將名為UpgradeRequired (示例)的用戶設置定義為bool (最簡單的方法是通過 IDE)。 確保其默認值為true

插入在應用程序開頭剪下的這段代碼:

  if (Properties.Settings.Default.UpgradeRequired)
  {
      Properties.Settings.Default.Upgrade();
      Properties.Settings.Default.UpgradeRequired = false;
      Properties.Settings.Default.Save();
  }

因此,只有在版本更改后才會調用 Upgrade 方法,並且只會調用一次(因為您通過設置UpgradeRequired = false禁用進一步升級,直到版本更改 - 當屬性重新獲得默認值true )。

Markus Olsson 已經在這里給出了很好的答案。

本質上,您將需要使用ApplicationSettingsBase.Upgrade()方法。

我希望其他人有更好的答案。 幾年前我遇到了這個問題,我能找到的唯一解決方案(確實有效)是使用我自己的機制來存儲設置,而不是默認的內置 .NET 方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM