我正在使用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
而不是主(父)程序集?
答案 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"];