2009-05-26 26 views
67

我實際上是在.NET相關的東西的學習階段,我正在探索如何保存應用程序。我最終編寫了自己的類,它將設置保存在XML文件中,然後我發現.NET本身支持保存應用程序設置。app.config文件和XYZ.settings文件有什麼區別?

但我找到了2種方法來做到這一點。當我在Visual Studio 2008中打開添加新項目對話框時,它提供了創建設置文件(.settings)或配置文件(.config)的選項。兩者之間有什麼區別,以及在什麼情況下應該使用它們?

回答

51

設置(來自.settings集合和Configuration.AppSettings)都存儲在.config文件中[與許多其他內容一起]。

不同之處在於.settings的東西[在.NET 2.0/VS2005中添加]在屬於一組屬性的設置上疊加了強類型類,而Configuration.AppSettings只是讓您檢索字符串,迫使您執行任何轉換,並沒有默認的概念。 (配置類實際上被分流到一個側面組件中以反映這一點 - 如果需要,您需要明確添加對System.Configuration的引用)。

將.settings添加到您的項目將導致app.config被添加到如果您還沒有設置的設置。每次更改組件/應用程序的設置列表時,都會自動生成讀取設置的類。

.Settings的其他功能是可以將某些設置指定爲特定於用戶(也可以通過單個調用保存用戶特定的設置)。

所有使用.Settings的最佳理由通常是您可以通過遵循屬性的用法(並且每個集合都是XML文件中的獨立塊)來清楚地識別誰在代碼庫中使用哪個設置的功能。 。 Configuration.appSettings在本質上更具全局性 - 它只是一個屬性包,你不知道哪個DLL,子系統或類取決於特定的設置條目。請參閱this blog post from Steven Smith瞭解更多信息。

最後,如果您對設置管理的瞭解還不夠充分,那麼您就不會打敗this Rick Strahl post on the subject以獲得完整性或絕對數量的想法和角度。

此外還有ASP.NET vNext Configuration東西,outlined in this article這是非常靈活的,並提供了不同的配置設置管理角度。

+0

感謝您的回答。只是混淆了一點:有兩種設置。一個是應用程序設置,另一個是用戶設置。如果兩種設置均存儲在配置文件中,那麼用戶設置對於不同的用戶將有何不同? – Hemant 2009-05-26 10:43:20

+2

對不起,提及這一點。用戶設置是默認設置存在的原因之一(如果用戶尚未使用該應用程序,默認設置將一直保存,直到保存更改爲止)。用戶設置存儲在用戶配置文件(Users \ XXX)目錄中的單獨配置文件中。用戶設置也可以更新(系統用戶不能使用默認API,也不應該 - 它們位於Program Files中,並且不可能安全地控制多個用戶訪問那裏。) – 2009-05-26 11:06:35

+0

配置管理器在哪裏適合所有這些?我試圖和未能得到那告訴我我settings.settings居住的地方,然後在那裏保存一個空白的配置 – 2014-01-10 14:38:08

3

設置文件是一個資源文件,您可以在其中指定不同的設置及其默認值。

這些值本身是在應用程序配置文件(.config文件)中配置的。

設置文件從未部署,所以您需要配置文件來完成配置。

0

app.config文件存儲在與應用程序相同的目錄中。普通用戶將不具有寫入權限(例如在「程序文件」中)。

設置文件應該存儲在用戶「AppData」目錄中(他擁有r/w權限)。

因此,使用用戶可配置選項的設置文件。

相關問題