从DLL参考加载自定义配置节

时间:2016-07-29 15:12:26

标签: c# web-config custom-configuration

在我们的项目中,我们定义了一个自定义配置部分,该部分在项目中被引用时工作正常。现在我们尝试从作为参考添加的dll引用相同的配置部分。从这个DLL中的代码我们可以访问ConfigurationManager.AppSettings没有问题,但在访问配置条目时会出错。

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:类型&#39; EmailManagerConfigSection&#39;存在于&namespace; namespace1,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null&#39;和&#39; namespace2,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null&#39;。

dll引用存在于运行主代码的同一bin目录中。反正有没有让dll引用主要的EmailManagerConfigSection,它具有值而不是dll的本地值为null?我们不想引入任何dll.config文件。

1 个答案:

答案 0 :(得分:1)

必须从可执行文件定义,加载和引用配置节,而不是从DLL。

您可以在解决方案空间中的dll项目中保留配置文件的源代码,但是无论编译器放置配置文件的哪个位置,主机可执行文件的app.config (引用dll)必须声明并在其中指定该文件的app.config [ApplicationName.Exe.config]只需将配置的相应<ConfigSections> <section>元素和实际section元素添加到主机可执行文件app.config。