正在从DLL引用加载自定义配置节

本文关键字:自定义 配置 加载 引用 DLL | 更新日期: 2023-09-27 17:59:23

在我们的项目中,我们定义了一个自定义配置部分,当在项目中被引用时,它可以很好地工作。现在,我们正试图从作为引用添加的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:类型"EmailManagerConfigSection"同时存在于"namespace1,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null"answers"namespace2,Version=1.0.0,Culture=neutral、PublicKeyToken=null"中

dll引用存在于运行主代码的同一bin目录中。是否有任何方法可以让dll引用具有值的主EmailManagerConfigSection,而不是dll的本地值(null)?我们不想引入任何dll.config文件。

正在从DLL引用加载自定义配置节

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

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