Dot-Net

有 Web 引用時的 .NET DLL 設置和配置 - 發生了什麼?

  • October 21, 2009

我的理解是,.NET 並沒有真正為 DLL “做”配置文件 - 只有主執行檔或 Web 應用程序獲取配置文件,並且執行檔/Web 應用程序引用的所有 DLL 都從中讀取。

但是在 VS2008 中,如果您將 Web 引用添加到類庫 (DLL) 項目中,它會在項目中添加一個 Settings.Settings 文件和一個 app.config 文件。它們包含 Web 參考的主要 URL。

那麼這些文件是乾什麼用的呢?DLL 無法在沒有幫助的情況下讀取它們,對吧?

編輯:app.config 和 Settings.Settings 的內容似乎有所不同:單獨更改(例如)DLL 項目的 app.config 文件中的 Web 參考 URL 沒有區別,但是如果您編輯 URL在 app.config 中,然後打開 Settings.Settings 文件,您在 app.config 中所做的更改會被複製到 Settings.Settings 中。然後,DLL 在執行時獲取新值。它是如何做到的?

編輯:我在這裡的部分困惑是因為我不太清楚 Settings.Settings 和 app.config 之間的區別以及它們之間的關係,所以也許人們也可以幫助解決這個問題。

DLL 無法讀取它們,但它們強烈提示您的 DLL 的使用者他們可能想要包含在真實的設置/配置文件中的內容

編輯

響應 OP 的評論 - 如果在執行時不存在正確名稱的設置,則在設置中最後編輯的任何內容都會作為預設值編譯到程式碼中。所以這就是為什麼它有效。

Visual Studio 必須在某處添加這些東西,但它不知道您要將其放入哪個應用程序中。您可以通過執行以下操作訪問 DLL 的配置:

var config = ConfigurationManager.OpenExeConfiguration("MyDll.dll.config");

唯一一次我發現這很有用是當我為 3rd 方應用程序編寫一個外掛作為 DLL 並希望我的 DLL 是可配置的(我懷疑不是大多數人經常這樣做)。

通常,儘管您只需將所需的配置部分移動到 app.config 或 web.config 中。

編輯- 關於您的更新,這是有道理的。Settings.settings 應用程序範圍的設置來自應用程序的 app.config 文件。對於應用程序範圍的設置,它實際上只是一個表示這些設置的強類型類。

引用自:https://stackoverflow.com/questions/1599539