多个app.config文件的C#问题

时间:2013-11-11 14:11:37

标签: c# .net app-config

我有一个WPF项目,它有自己的app.config文件。我还创建了一个我的WPF项目引用的单独的dll。我的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 个答案:

答案 0 :(得分:1)

正如本answer所述,.Net .dll的配置文件不是标准做法,不直接支持,一般不推荐使用。

答案 1 :(得分:0)

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

这有帮助吗?

答案 2 :(得分:0)

我认为您应该使用WPF配置文件。 但是,如果您希望将库的配置数据放在单独的文件中,则可以执行此操作并从WPF配置中引用此文件。

答案 3 :(得分:0)

您可以在DLL上执行的操作是手动加载配置,因为DLL无法进行配置。

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