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