我有一个包含1个控制台应用程序和2个库的解决方案。
在库中,我有两个不同的app.config作为示例我的data.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="OutputFileFolder" value="c:\\log" />
<add key="OutputIndexFile" value="c:\\log\index.xml" />
</appSettings>
</configuration>
在这个库类中我有构造函数
_indexPath = ConfigurationManager.AppSettings["OutputIndexFile"];
但是如何从我的主控制台应用程序加载Data.config
文件(这应该是主配置文件)?
答案 0 :(得分:4)
dll项目中的配置文件在运行时不相关。控制台应用程序项目中的配置文件(如果有)是将被使用的配置文件。
如果要在两个单独的项目中使用配置文件,可以将其as a link添加到第二个项目中,或者可以使用post-build event将其复制。然而这两件事看起来都有些笨拙。
答案 1 :(得分:2)
库实际上没有相关的配置文件 - 它们在可执行文件(在您的情况下是控制台应用程序)下运行。
您应该将所有配置放在应用程序的app.config
文件中,以便库中的代码可以访问它。
答案 2 :(得分:1)
您可以通过多次Configuration
实例加载多个配置文件来调用ConfigurationManager.OpenMappedExeConfiguration
(将配置文件添加到文件映射中,全局文件将自动添加并指定{{3 }}
类似的东西:
var fileMap = new ExeConfigurationFileMap {
ExeConfigFilename = Path of dll's config file
};
var cfg = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
var result = cfg.AppSettings["OutputIndexFile"];