2016-07-29 80 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

没问题,乐于帮忙! –