0

我有一个包含 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从我的主控制台应用程序加载文件(这应该是主配置文件)?

4

3 回答 3

4

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

如果您想在两个单独的项目中使用配置文件,您可以将其作为链接添加到您的第二个项目,或者您可以使用构建后事件将其复制过来。然而,这两个似乎有点hacky。

于 2012-08-01T14:53:03.560 回答
2

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

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

于 2012-08-01T14:53:32.363 回答
1

您可以通过Configuration多次调用来加载多个配置文件ConfigurationManager.OpenMappedExeConfiguration(将您的配置文件添加到文件映射中,全局文件将自动添加并指定一个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"];
于 2012-08-01T14:57:10.830 回答