2013-08-01 105 views
1

我對這個問題有點困惑。引用的項目和配置文件

我的情況是我在C#兩個單獨的項目:

  1. 是服務(A)
  2. 一個輔助項目(B)

兩者都是在單獨的解決方案文件。 (A)有參考文獻(B) 我感到困惑的是(A)中有app.config文件,所以當我參考時:

ConfigurationManager.AppSettings["XYZ"] 

在項目(B)中。這是否意味着我正在使用項目(A)的app.config文件?

+1

您只能使用1個配置,即主項目的配置。從那裏複製B的東西。 –

回答

3

是的,ConfigurationManager類和底層配置文件可用於整個AppDomain實例。由於您的庫將被服務使用,它將成爲服務的AppDomain的一部分,並繼承對該配置文件的訪問。

如果您希望其他二進制文件(項目B)擁有它自己的文件,那麼您需要在它自己的AppDomain中創建它的一個實例。這比它的價值更麻煩,所以我不會試圖去做這件事。

任何將使用此庫的AppDomain都將提供它的配置設置。這意味着如果庫具有自己的設置,服務本身不使用,那麼您需要確保使用該庫的任何可執行文件都具有設置。

所以,如果你有一個ProjA(控制檯應用程序),ProjB(WinForms應用程序),他們都使用ProjC(共享庫)的解決方案,請確保ProjC和ProjB的配置文件因爲ProjA和ProjB在運行時是它們自己的AppDomain實例。

+0

所以你建議我將所有的配置信息添加到一個配置文件,即(A) –

+0

@DawoodAwan是的,這是正確的 – Ehsan

1

回答你的問題是YES

另一點,這裏要注意的是,你的主要項目的app.config文件始終部署(未引用的項目),除非你明確地複製引用項目的app.config。因此,它始終是更好地做你的主要項目,你的情況是一個

1

如果我理解正確,你必須在UR解決方案

  1. A計劃兩個項目(的app.config中的所有工作WebService的)
  2. 項目B(類庫)

,如果是這樣的話 - 是的。在你的情況下,ConfigurationManager.AppSettings將從啓動項目的配置文件中讀取,即項目A.

但是,如果您有不同的項目獨立運行,例如,兩個不同的服務項目Service1和Service2都將引用它們各自的app.config/web.config文件。