[英]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.