2011-04-07 344 views
11

我有一個VC2010 C#解決方案,其中包含許多項目。從同一解決方案中的另一個項目引用Web.Config文件C#

因此,例如,我有一個web項目,我有一個類庫。

在web.config文件中,我在<appSettings>部分有一個鍵,例如,

<add key="FileDirectory" value="G:\ftproot\sales" /> 

我還在Web.Production.config文件中添加了一個鍵以反映服務器上的文件目錄。

所以,當我引用它在我的web項目(這是MVC) - 我這樣做是這樣的:

var FTPPath = ConfigurationManager.AppSettings["FileDirectory"]; 

這是我的web項目中工作正常。但是,我還需要在類庫中引用這個問題,這引出了我的問題 - 有沒有辦法從另一個項目引用web.config文件中的某個鍵,例如,一個類庫,在相同的解決方案??

所有幫助表示讚賞。 謝謝

回答

15

是的,你可以使用完全相同的代碼。 .Net將在啓動應用程序域的應用程序的配置文件中查找配置密鑰。這種應用程序使用的類庫可以訪問它的配置文件。

+0

嗨Gerrie,謝謝你清理那個。它在開始時並不工作,但我添加了System.Configuration的參考,現在它工作正常。一旦時間到了,我會標記爲正確! – 109221793 2011-04-07 08:41:49

+0

謝謝,我非常感謝你的回覆。 – 2011-04-07 08:49:50

3

類庫沒有自己的配置。他們使用哪個可執行文件的配置。

這意味着你應該可以使用相同的代碼,它會從配置中讀取設置(假設它在那裏)。

這並不總是很方便,但(例如,如果你寫一個MMC管理單元,因爲這意味着你必須修改系統文件夾中的一個mmc.exe.config基於.NET插件。)

您可能更好的方法是將此必需的配置設置傳遞給您的庫代碼。那麼在你控制配置的應用程序中,你可以從那裏讀取它並將其傳入,在應用程序中,你不能使用另一種方法,如從註冊表或手動讀取配置文件中讀取。或者充分利用這兩個世界,讓它可以傳入,如果沒有完成,它會嘗試從默認配置中讀取它。

This question有關於與dll配置相關的陷阱的一些更多細節,但也有一些技巧來做到這一點,如果你需要。

相關問題