c#中的多个配置文件

时间:2012-08-01 14:50:51

标签: c# app-config

我有一个包含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文件(这应该是主配置文件)?

3 个答案:

答案 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"];