在我们的项目中,我们定义了一个自定义配置部分,在项目中被引用时可以正常工作。现在我们尝试从作为参考添加的 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' 和 'namespace2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null '。
dll 引用存在于运行主代码的同一 bin 目录中。无论如何让dll引用具有值的主EmailManagerConfigSection,而不是dll的本地内容,它是空的?我们不想引入任何 dll.config 文件。