我在我的应用程序中有一堆DLL项目,每个项目都包含自己的Settings.set/app.config。当我编译这个应用程序并运行以进行调试时,一切都很正常,但是到了部署时间,我无法让我的DLL读取它们自己的设置文件。
我已经做了一些阅读,很明显,让每个dll读取自己的配置有两种方法--一种是将.dll.config专用于库,另一种是将dll的配置嵌入到process.exe.config中。
我在试图实现这两个方面都遇到了重大问题,我想知道是否有人在这方面有任何好的文档--网络上似乎有短缺的地方。
如果可能的话,我希望为每个库提供一个单独的.dll.config,但在紧要关头,让我的每个库读取它们自己的process.exe.config部分就可以了。
谁能给我指出正确的方向,因为我离这个应用程序太近了,但是这个绊脚石让我非常头疼。
编辑:当我合并配置文件时,当我在我的库中初始化对象时,我开始得到TypeInitializer异常。这可能只是我被延迟,但是有人有一个合并配置文件的工作示例和一些从多个程序集读取它的基本演示代码吗?
发布于 2009-03-13 13:08:39
你遇到的“重大问题”是什么?我首先将dll的配置嵌入到exe的配置中,这是可行的,但很麻烦。现在,我在一个dll项目中拥有了所有配置内容。除了复制设置之外,我需要做的唯一一件事就是将settings类更改为公共类。
下面是一个合并的app.config的示例,它可以工作:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="SharedConfig.Client.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<!-- Begin copy from library app.config -->
<section name="SharedConfig.Library.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<!-- End copy from library app.config -->
</sectionGroup>
</configSections>
<applicationSettings>
<SharedConfig.Client.Properties.Settings>
<setting name="Bar" serializeAs="String">
<value>BarFromClient</value>
</setting>
</SharedConfig.Client.Properties.Settings>
<!-- Begin copy from library app.config -->
<SharedConfig.Library.Properties.Settings>
<setting name="Bar" serializeAs="String">
<value>BarFromLibrary</value>
</setting>
</SharedConfig.Library.Properties.Settings>
<!-- End copy from library app.config -->
</applicationSettings>
</configuration>发布于 2009-03-13 13:04:19
让每个类库在自定义ConfigurationSection中定义配置设置。
然后将自定义节处理程序添加到process.exe.config文件中。
这篇MSDN文章的解释相当全面,在VB和C#中都有例子。
发布于 2009-03-13 13:10:26
见如果DLL的app.config应该在“主配置”…中我们如何处理DLL中的WCF引用?。真正的答案是“复制和粘贴”。不幸的是,这是微软想要的通用解决方案。在某些情况下,可以使用.NET 2.0设置机制,因为它将默认值写入DLL本身。在运行时,DLL可以将更新的设置保存到.exe.config中。
https://stackoverflow.com/questions/642563
复制相似问题