4

我有一个 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 配置文件。

4

4 回答 4

1

如this answer中所引用,.Net .dll 的配置文件不是标准做法,不直接支持,通常不推荐。

于 2013-11-11T14:22:16.763 回答
0

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

var FileMap = new ExeConfigurationFileMap();
FileMap.ExeConfigFilename = DllConfigFileName;
var cfg =  ConfigurationManager.OpenMappedExeConfiguration(FileMap, ConfigurationUserLevel.None);
var setting = cfg.AppSettings;
于 2013-11-11T14:24:14.440 回答
0

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

这有帮助吗?

于 2013-11-11T14:17:31.607 回答
0

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

于 2013-11-11T14:17:45.690 回答