2012-08-24 17 views
4

我有一個普遍的問題,但我也會解釋我爲什麼要問你可以更好地瞭解我的意思。加載系統配置屬性的.net層次結構是什麼

我有一個dll,它具有在Settings中定義的webservice url,並且在運行時它使用Settings.Default從設置中獲取URL。但是,我們的環境中都沒有(dllName).dll.config文件,並且未在調用應用程序的(exeName).exe.config中定義特定設置。很明顯,默認值沒有被使用,因爲它被設置爲某個內部IP地址;但是這在生產中起作用,他們沒有在我能找到的任何.config文件中定義的此設置,並且它仍以某種方式擊中正確的Web服務URL。在這種情況下,我需要知道從哪裏加載值。

所以我更加寬泛的問題是,層次結構如何在.net中加載設置?例如,它是否先查看machine.config,然後(exeName).exe.config,以及它是否是一個dll(dllName).dll.config?它首先看什麼,它在其他地方看到的順序是什麼,還有沒有其他地方我沒有提到可以定義這個配置?

另外,對於一個DLL,如果你在Settings中定義了某些東西,它是否嵌入編譯後的dll中作爲默認值,如果在其他.config文件中找不到該屬性,是否使用該屬性?

+1

像這樣的事情 - http://msdn.microsoft.com/en-us/library/ms178685(v=vs.100).aspx? – t3hn00b

+0

來自@ t3hn00b的良好鏈接。它應該是一個答案。 – Kamil

回答

6

.NET配置的分層性質提供了很大程度的靈活性 ,允許特定用戶或位置有自己的 配置設置。但是,這些配置設置不是 隔離,而在更具體的級別進行的重複設置具有 覆蓋在較低特定級別進行的設置的功能。如圖所示,可以是 ,最具體的配置文件合併爲 不太具體,最具體的設置覆蓋最不特定的 。在Exe上下文中,用戶(或更準確地說,本地 用戶)設置是最具體的,其次是漫遊用戶(在兩臺或多臺機器之間共享 ),應用程序和最後是機器。

Config hierarchy and merging

我建議你閱讀下面的文章,因爲你的答案只是一個引用:

而且有用的將是:

+0

除非您的圖片和文字是您自己的,請給出適當的歸屬。 – wal

+0

是的,我知道,評論仍然適用。這個答案只是從該文章的剪切/粘貼 – wal

+0

@wal答案與參考。當答案是MSDN文章或任何其他文章的一部分時,認爲引用會很好,特別是在「廣泛的問題」上。 – Regfor