2008-12-14 18 views
1

我想加載一個特定的配置節,但CLR裝載組件的方式是給我帶來些麻煩:如何:使用的ConfigurationSection不通過GetSection調用加載它

我CustomConfigurationSection定義是在一個特定的程序集這是無法通過程序集加載的全部過程找到的,因爲我使用基本上加載程序集的外部工具,通過反射發現關於它的一些信息,然後嘗試「安裝」它。與嘗試安裝Windows服務時的installutil非常相似。

我瘋了,因爲ConfigurationManager嘗試在原始進程的位置下找到我的ConfigurationSection所需的程序集。我知道這一點,因爲我使用SysInternals Process Monitor。有人可以提供一些解決方法或方向?

謝謝!

回答

1

如果您知道程序集的路徑,那麼您應該嘗試ConfigurationManager.OpenExeConfiguration(exePath)。

0

如果您的程序集需要反序列化您的自定義配置部分,但CLR找不到程序集,那麼我認爲您運氣不好(或者我誤解了這個問題?)。

有什麼辦法可以讓CLR找到你的程序集(提供一條提示路徑)?如果沒有,也許你最好使用單獨的XML文件來處理這些數據,而不是使用app.config/web.config。

+0

我同意。這正是我的問題。也許我會自己解析它,我只是想保持一致,並以「dotnettish」的方式:( – ciriarte 2008-12-15 07:02:21

0

爲什麼在裝配之前(定義配置節)已經裝載了,要訪問配置節?您是否使用配置部分來定義組件的位置?如果是這樣,那麼你正在玩循環引用。

定義自定義配置節的代碼可以是非常獨立的。它可以是它自己的組件。我建議將此代碼分離到它自己的程序集中,並將其安裝到GAC或運行時路徑中。我不知道爲什麼你需要一個外部工具來「加載」讀取自定義配置部分所需的代碼。

0

我正面臨類似的問題。幾個DLL被加載到一個主應用程序dynamiccaly中。其中一些dll需要一個配置文件,我使用默認的ConfigurationManager來處理它。我可以成功地檢索正確的文件(基於後綴「.config」的dll名稱)並使用AppSettings和ConnectionStrings中的設置。

現在我試圖加載自定義配置節。運行時間抱怨在dll中找不到該節的類型。我已經在配置文件中指定了正確的dll(在configSections條目中),我知道dll被加載,因爲這個dll實際上是插件本身。但仍然;它看起來像運行時只使用GAC/bin目錄中的類型來查找配置節。

所以簡單地說:我嘗試加載一個自定義配置節,它在與試圖加載它的代碼相同的dll中指定,但它不起作用。

相關問題