【问题标题】:C# issues with multiple app.config files多个 app.config 文件的 C# 问题
【发布时间】:2013-11-23 09:02:30
【问题描述】:

我有一个 WPF 项目,它有自己的 app.config 文件。我还创建了一个单独的 dll,我的 WPF 项目引用了它。我的 dll 也有自己的 app.config。

我遇到的问题是在我的 dll 中我有一段代码(如下)在 WPF 应用程序中不起作用。通过阅读这是因为启动项目的 app.config 文件是默认文件,因此当我使用下面的 ConfiguationManager 时,它找不到任何应用程序设置,因此字符串为空。因为它正在查看 WPF 的配置文件而不是我的 dll 配置。解决此问题的最佳方法是什么,因为我不想在另一个配置中复制这些设置。

public Messenger()
{                        
    _queueManagerName = ConfigurationManager.AppSettings["QueueManagerName"];
    _queueNameSendMessage = ConfigurationManager.AppSettings["QueueNameSendMessage"];
    _queueNameRecieveMessage = ConfigurationManager.AppSettings["QueueNameRecieveMessage"];
    _queueChannel = ConfigurationManager.AppSettings["QueueChannel"];
    _queueConnectionName = ConfigurationManager.AppSettings["QueueConnectionName"];
}

解决此问题的最佳方法是什么?我想要的只是让我的 dll 读取它自己的配置文件而不是 WPF 配置文件。

【问题讨论】:

标签: c# .net app-config


【解决方案1】:

正如您所说,运行的应用程序使用其配置文件 - 句号。 你可以做的是使用 ConfigurationManager.OpenExeConfiguration : http://msdn.microsoft.com/en-us/library/ms224437(v=vs.110).aspx

这有帮助吗?

【讨论】:

    【解决方案2】:

    我认为你应该使用 WPF 配置文件。 但是如果你想将你的库的配置数据放在单独的文件中,你可以这样做并从 WPF 配置中引用这个文件。

    【讨论】:

      【解决方案3】:

      正如answer 中提到的,.Net .dll 的配置文件不是标准做法,不直接支持,一般不推荐。

      【讨论】:

        【解决方案4】:

        您可以对 DLL 执行的操作是手动加载配置,因为 DLL 不能有配置。

        var FileMap = new ExeConfigurationFileMap();
        FileMap.ExeConfigFilename = DllConfigFileName;
        var cfg =  ConfigurationManager.OpenMappedExeConfiguration(FileMap, ConfigurationUserLevel.None);
        var setting = cfg.AppSettings;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-02-03
          • 2011-06-12
          • 1970-01-01
          • 2013-04-09
          • 2013-07-07
          • 2012-05-26
          • 2013-06-19
          • 2011-08-29
          相关资源
          最近更新 更多