获取另一个Exe的App.Config

我有一个带有App.Config文件的exe。 现在我想在exe周围创建一个包装器dll,以便消耗一些function。

问题是如何从包装器DLL访问exe中的app.config属性?

也许我应该在我的问题中多一点,我有以下app.config内容与exe:

       

问题是如何从包装器DLL中取出“myValue”?


谢谢你的解决方案。

实际上我最初的概念是避免使用XML文件读取方法或LINQ或其他任何方法。 我首选的解决方案是使用配置管理器库等 。

我将非常感谢使用通常与访问app.config属性相关联的类的任何帮助。

ConfigurationManager.OpenMappedExeConfiguration方法将允许您执行此操作。

来自MSDN页面的示例:

 static void GetMappedExeConfigurationSections() { // Get the machine.config file. ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap(); // You may want to map to your own exe.comfig file here. fileMap.ExeConfigFilename = @"C:\test\ConfigurationManager.exe.config"; System.Configuration.Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); // Loop to get the sections. Display basic information. Console.WriteLine("Name, Allow Definition"); int i = 0; foreach (ConfigurationSection section in config.Sections) { Console.WriteLine( section.SectionInformation.Name + "\t" + section.SectionInformation.AllowExeDefinition); i += 1; } Console.WriteLine("[Total number of sections: {0}]", i); // Display machine.config path. Console.WriteLine("[File path: {0}]", config.FilePath); } 

编辑:这应输出“myKey”值:

 ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap(); fileMap.ExeConfigFilename = @"C:\test\ConfigurationManager.exe.config"; System.Configuration.Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); Console.WriteLine(config.AppSettings.Settings["MyKey"].Value); 

经过一些测试,我发现了一种方法。

  1. 将App.Config文件添加到测试项目中。 使用“添加为链接”选项。
  2. 使用System.Configuration.ConfigurationManager.AppSettings["myKey"]来访问该值。

我想你要找的是:

 System.Configuration.ConfigurationManager.OpenExeConfiguration(string path) 

它是一个xml文件,您可以使用基于Linq-XML或DOM的方法来解析相关信息。
(那就是说我会质疑是否有更好的设计,无论它是什么……你想要实现。)

我是第二个Gishu的观点,还有另一种方式。 将EXE的公共/“公共”部分抽象为DLL创建一个包装器EXE来运行它不是更好吗? 这当然是更常见的发展模式。 只有你想要消费的东西会进入DLL,而EXE会做它当前所做的所有事情,减去进入DLL的内容。

在IDE中添加链接只会在开发过程中提供帮助。 我认为lomaxx有正确的想法: System.Configuration.ConfigurationManager.OpenExeConfiguration.