指定AppSettingsReader()以查找不同的app.config以获取密钥

时间:2016-10-04 09:45:53

标签: c# .net app-config

我正在使用AppSettingsReader()方法从app.config文件中的给定密钥中获取值:

var value = new AppSettingsReader().GetValue("SomeKey", typeof(string)) as string;

这是在一个具有自己的app.config文件的单独程序集中完成的。现在,如果我在此app.config中指定键/值对:

<appSettings>
    <add key="SomeKey" value="MyValue" />
</appSettings>

它抛出错误:

  

“appSettings配置部分中不存在密钥'SomeKey'。”

因为它在我的主应用程序的App.config文件中查找,如前所述,在另一个程序集中。当我将键/值对放在那里时,它可以正常工作。

有没有办法告诉AppSettingsReader()查看调用它的程序集的app.config而不是主(父)程序集?

1 个答案:

答案 0 :(得分:2)

对于这种情况,您可以使用ConfigurationManager类。它允许您从各个位置打开配置文件。要打开除.exe之外的.config文件,您可以使用方法OpenMappedExeConfiguration

string pathToOtherConfigFile = ""; //you need to specify the path 
ExeConfigurationFileMap configMap = new ExeConfigurationFileMap();
configMap.ExeConfigFilename = pathToOtherConfig;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);

var value = config.AppSettings["SomeKey"];