指定 AppSettingsReader() 在不同的 app.config 中查找密钥

Specify AppSettingsReader() to look in different app.config for key

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

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

这是在 class 中完成的,它位于一个单独的程序集中,有自己的 app.config 文件。现在,如果我在此 app.config:

中指定 key/value 对
<appSettings>
    <add key="SomeKey" value="MyValue" />
</appSettings>

它抛出错误:

"The key 'SomeKey' does not exist in the appSettings configuration section."

因为它在我的主应用程序的 App.config 文件中查找,如前所述,它位于不同的程序集中。当我把我的 key/value 对放在那里时它工作正常。


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

对于这种情况,您可以使用 ConfigurationManager class。它允许您从不同的地方打开配置文件。要打开 .config 文件,而不是来自 .exe 的文件,您可以使用方法 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"];