2015-05-09 115 views
2

我想了解應用程序設置/ AppSettings。已棄用C#的App.config?

我的理解是,AppSettings(它們在app.config文件中)通過ConfigurationManager.AppSettings訪問,這被認爲是棄用的功能。

據我所知應用程序設置通過Properties.Settings.Default進行訪問,通常創建爲.settings文件(在Visual Studio中,這可以在Project Properties中完成)。

如果這是正確的(請確認),我的問題是爲什麼Visual Studio中的所有項目都會自動創建一個App.config文件?我可以/應該刪除此文件並創建一個Settings.settings文件嗎?我應該同時使用嗎? (爲什麼?)我可以使用Properties.Settings訪問app.config文件嗎?如果是這樣,怎麼樣?

此外,如果Properties.Settings.Default訪問「默認」設置文件,您將如何/爲什麼要訪問默認文件以外的文件?

編輯:此問題未由AppSettings與應用程序設置線程回答,因爲我的具體問題是爲什麼我需要App.Config文件。

+1

http://stackoverflow.com/questions/2350893/appsettings-vs-applicationsettings-appsettings-outdated – Haighstrom

+0

是,我可以同時使用的.config和答案。設置文件,雖然.settings更新,兩者仍然有實用性取決於情況? – Haighstrom

回答

1

ApplicationSettings優於AppSettings,因爲它們是強類型的,但有時候(比如在Azure中)AppSettings是首選的,因爲它們可以通過實例的實例從Azure控制面板進行設置。

這就是說,讓我們看看你的問題的其他部分有關Settings.Default與App.Config。

我不會從每個項目中刪除App.Config,因爲它會在您更新設置時自動更新。設置文件在代碼中具有默認值,但App.Config文件可以在運行時覆蓋這些值。這很好,能夠將相關部分複製到將要消耗庫的新應用程序(到它們的app.config或web.config中)。

從您的項目執行的唯一app.config文件是啓動項目,並且該app.config(或web.config,因爲它可能)中的值是在運行時使用的。

希望這會清除文件之間關係的一些混淆。配置文件的

樣本結構:

ProjectA 
- ProjectA.Settings 
- App.Config // VS syncs with Settings file 
ProjectB 
- ProjectB.Settings 
- App.Config // VS syncs with Settings file 
ProjectC (Startup Project 
- ProjectC.Settings 
- App.Config 
    // Can contain override settings for ProjectA.Settings and ProjectB.Settings 
+0

所以我沒有意識到.settings文件和app.config相互更新。但我仍然不確定我是否理解每個人的目的。爲什麼有兩個文件做同樣的事情(即保存用戶/應用程序數據)? 是因爲與app.config不同,設置文件與命名空間相關聯,所以您可以通過一個App.Config文件控制多個設置文件? – Haighstrom

+0

正確。最後,您的啓動應用程序App.Config可能包含多個* .Settings文件配置的部分,以覆蓋默認值。 –

+0

但爲什麼不只是有幾個.settings文件,並沒有App.Config文件? .settings文件只是一種用戶友好的方式來修改app.config文件,或者在運行時都可以實際訪問它們嗎? – Haighstrom