2016-07-29 48 views
0

在我們的項目中,我們定義了一個自定義配置部分,在項目中被引用時工作正常。現在我們試圖從一個作爲參考添加的dll引用這個相同的配置部分。從這個DLL中的代碼,我們可以訪問ConfigurationManager.AppSettings,沒有問題,但在訪問配置條目時出錯。從DLL參考加載自定義配置部分

的Web.config代碼

<section name="mailManager" type="FullNamespace, NameSpace" /> 

<mailManager prop1="propVal1"> 
    <prop2 key1="keyVal1" key2="keyVal2" key3="keyVal3" /> 
    <prop3 key1="keyVal1" key2="keyVal2" /> 
</mailManager> 

其中引用試圖獲取配置部分時,它拋出以下錯誤的DLL。這部分同時存在於dll和主要解決方案代碼庫的解決方案中。

var mailManagerConfigSection = ConfigurationManager.GetSection("mailManager") as EmailManagerConfigSection; 

我們得到的錯誤是錯誤CS0433:類型 'EmailManagerConfigSection' 兩個 'namespace1,版本= 1.0.0.0,文化=中立,公鑰=空' 和「namespace2,版本= 1.0.0.0存在,Culture = neutral,PublicKeyToken = null'。

dll引用存在於運行主代碼的相同bin目錄中。無論如何有dll引用主要EmailManagerConfigSection具有值,而不是任何本地的dll是null?我們不想引入任何dll.config文件。

回答

1

配置節必須從可執行文件中定義,加載和引用,而不是從DLL中引用。

你可以保持的源代碼在你解空間的dll項目的配置文件,但只要該DLL的編譯把配置文件,在app.config爲主機可執行(引用的DLL )必須在它的app.config中聲明並指定該文件[ApplicationName.Exe.config]只需將用於配置的合適的<ConfigSections><section>元素和實際節元素添加到主機可執行文件app.config中即可。

+0

感謝Charles,當我看到ConfigurationManager.AppSettings [「asVal」]獲得條目時,我很希望我可以做出類似的事情,但我可以理解爲什麼這是不可能的。欣賞你的時間。 –

+0

沒問題,樂於幫忙! –