指定 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"];
我正在使用 AppSettingsReader()
方法从 app.config
文件中的给定键获取值:
var value = new AppSettingsReader().GetValue("SomeKey", typeof(string)) as string;
这是在 class 中完成的,它位于一个单独的程序集中,有自己的 app.config
文件。现在,如果我在此 app.config
:
<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"];