2011-03-21 83 views
4
最佳方式

可能重複:
What is the best way to store user settings for a .NET application?.NET - 存儲應用程序設置

你好。 在.Net 4.0中存儲應用程序設置的最佳方式是什麼? Windows註冊表?應用程序設置?

如果我希望能夠更新程序並保留舊版本的設置(新版本可以有更多新設置並刪除一些舊設置),該怎麼辦?

如果我想存儲自定義對象的集合,該怎麼辦?

我知道有類似的問題,但它是關於.Net 2.0。也許在4.0中有一些保存設置的新方法。

預先感謝您。

+0

@Scott安德森我'要求.NET 4.0。你給我的鏈接大概是2.0。 – Hooch 2011-03-21 14:54:37

+0

4.0中沒有新東西。或3.0或3.5 – 2011-03-21 14:56:40

+0

在.NET 4.0中沒有任何變化與此相關。愚蠢的問題仍然有效,並在.NET 4.0中推薦。 – 2011-03-21 14:56:56

回答

1

MS的新一直試圖讓人們走出註冊表過去2個OS版本。另外,正如@Scott Anderson在評論中所說的,在這方面,.NET 4.0沒有什麼重大變化。

如果這是一個沒有備份數據存儲的本地應用程序,那麼繼續並使用app.config文件。

如果你想存儲本地數據,那麼我建議使用類似sql lite或類似的機制,你可以在其中輕鬆創建表並根據需要查詢它。這也有助於版本控制。

1

Application.Settings肯定是要走的路 - 不像註冊表設置,它可以在任何操作系統,用戶級別或從終端服務客戶端運行應用程序時工作。

在過去,我創建了一個名爲MigrateUserSettings的屬性,並用它來幫助我管理用戶設置的遷移。

我在默認情況下將該屬性的值設置爲true。在啓動時,如果我發現它的設置爲true,我嘗試遷移設置,然後將值設置爲false(然後保留false,直到應用程序升級爲止)。

例子:

if (Settings.Default.MigrateUserSettings) 
{ 
    Settings.Default.Upgrade(); 
    Settings.Default.MigrateUserSettings = false; 
    /* Custom handling of migrating specific settings (if required) here 
     e.g. if any have been renamed or if the possible options have changed. */ 
    Settings.Default.Save(); 
} 
+0

MigrateUserSettings如何設置爲true?這是這種策略的一部分,我不明白,因爲我的測試(使用.NET 4.0和ClickOnce) - 發佈我的程序的新版本不會導致該設置恢復爲默認值。 – 2013-11-26 21:30:48

+0

對不起,我不能回答這個問題,它適用於我(即使我只是直接運行新版本,而不安裝)。也許它是依賴於某個構建/文件版本被碰撞的東西而不是? – 2013-11-27 06:27:52

+0

在哪個命名空間是'Settings'類? – Tschareck 2016-03-18 08:50:52