获取另一个exe的App.Config
我有一个App.Config
文件的exe文件。现在我想创建一个包装DLL的exe文件,以消耗一些功能。获取另一个exe的App.Config
问题是我如何从包装DLL访问exe中的app.config属性?
也许我应该多一点点我的问题,我有以下的app.config内容与EXE:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="myKey" value="myValue"/>
</appSettings>
</configuration>
的问题是如何如何得到“myvalue的”出从包装dll的?
感谢您的解决方案。
其实我最初的概念是为了避免XML文件阅读方法或LINQ或其他。我的首选解决方案是使用configuration manager libraries and the like。
我会感谢任何使用通常与访问app.config属性相关的类的帮助。
一些测试后,我发现了一个办法做到这一点。
- 将App.Config文件添加到测试项目。使用“添加为链接”选项。
- 使用来访问该值。
这是一个xml文件,您可以使用基于Linq-XML或DOM的方法来解析出相关信息。
(这说我会问,如果没有更好的设计,无论它是什么..你试图实现。)
ConfigurationManager.OpenMappedExeConfiguration Method将允许你这样做。从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);
我第二次Gishu的观点,即有另一种方式。将EXE的common /“public”部分抽象成DLL创建一个包装EXE来运行它不是更好吗?这当然是更通常的发展模式。只有你想要消耗的东西会进入DLL,而EXE会完成它目前所做的所有事情,减去进入DLL的内容。
你好,我意识到你在这里有一个观点。 但我创建封装DLL作为测试程序集来测试我的EXE内部的逻辑。所以我没有选择:) – Graviton 2008-09-10 07:28:26
我想你要找的是什么:
System.Configuration.ConfigurationManager.OpenExeConfiguration(string path)
在IDE中添加链接只会在开发过程中提供帮助。我认为lomaxx有正确的想法:System.Configuration.ConfigurationManager.OpenExeConfiguration.
+1如果你还没有发布这个答案。对于一个解决方案中跨不同项目的配置文件,这也是一个很好的解决方案。 – takrl 2012-02-23 07:29:16