【问题标题】:multiple config file in c#c#中的多个配置文件
【发布时间】:2012-07-30 12:04:13
【问题描述】:

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

【问题讨论】:

    标签: c# app-config


    【解决方案1】:

    您的 dll 项目中的配置文件在运行时不相关。您的控制台应用程序项目中的配置文件(如果有)将被使用。

    如果您想在两个单独的项目中使用一个配置文件,您可以将其添加到您的第二个项目中as a link,或者您可以使用post-build event 将其复制过来。然而,这两个似乎都有点 hacky。

    【讨论】:

      【解决方案2】:

      库实际上并没有相关的配置文件 - 它们在可执行文件(在您的情况下为控制台应用程序)下运行。

      您应该将所有配置放在应用程序的app.config 文件中,以便库中的代码可以访问它。

      【讨论】:

        【解决方案3】:

        您可以通过多次调用ConfigurationManager.OpenMappedExeConfiguration 获得多个Configuration 实例来加载多个配置文件(将您的配置文件添加到文件映射中,全局文件将自动添加并指定ConfigurationUserLevel.None

        类似:

        var fileMap = new ExeConfigurationFileMap {
                            ExeConfigFilename = Path of dll's config file
                     };
        
        var cfg = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
        var result = cfg.AppSettings["OutputIndexFile"];
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-02-08
          • 1970-01-01
          • 1970-01-01
          • 2021-01-23
          • 2019-08-04
          • 1970-01-01
          • 2020-05-09
          • 2010-12-29
          相关资源
          最近更新 更多