2008-11-22 56 views
9

我有一個.NET dll需要從它的配置文件中讀取它的配置設置。通常,配置文件與DLL放在同一個目錄中。但是,如果DLL被GAC處理,我該如何讀配置文件,因爲我只能將這些DLL放入GAC中,而不是它的配置文件。在GAC中爲程序集配置文件

回答

13

用戶是否需要配置Dll?如果是這樣,那麼DLL應該使用app.config文件中的配置設置,而不是它自己的配置。 app.config文件應該與應用程序存儲在同一個目錄中。如果沒有,那麼你可以採取幾種不同的方式。您可以對machine.config文件進行更改,以便您的Dll可以在那裏找到它們。我不會這樣做。或者,您可以將配置存儲在設置類中。這些可以通過配置被覆蓋,但是你的默認設置將通過屬性在設置類的生成代碼中設置,所以缺省配置文件不會影響你的Dll,當默認值都是必需的。

12

我同意tvanfosson的Gac'ed DLL將從應用程序的路徑中讀取。 但你也可以通知DLL是這樣的路徑:

System.Configuration.ExeConfigurationFileMap fileMap = new System.Configuration.ExeConfigurationFileMap(); 
fileMap.ExeConfigFilename = "THE PATH TO THE CONFIG"; 
System.Configuration.Configuration cfg = 
System.Configuration.ConfigurationManager.OpenMappedExeConfiguration(fileMap, System.Configuration.ConfigurationUserLevel.None); 

string thevalue=cfg.AppSettings.Settings[variable].Value; 
+0

tvanfosson有一個很好的答覆,但我認爲這是一個更適合的答案。 – Keith 2011-06-08 19:14:17

1

你可以因爲DLL使用AppDomain.CurrentDomain.BaseDirectory的本身不會被執行,你只需要得到可執行文件目錄。

喜歡的東西:

var appDomain = AppDomain.CurrentDomain.BaseDirectory; 
string sFileName = appDomain.Replace("\\bin\\Debug", ""); 
sFileName = sFileName + "Config\\config.xml"; 
+0

對不起,因爲這是我第一次在這裏回覆..代碼格式不正確:( – 2013-12-02 11:44:07