C# 指定AppSettingsReader()以在不同的app.config中查找密钥
我正在使用C# 指定AppSettingsReader()以在不同的app.config中查找密钥,c#,.net,app-config,C#,.net,App Config,我正在使用appsetingsreader()方法从app.config文件中的给定键获取值: var value = new AppSettingsReader().GetValue("SomeKey", typeof(string)) as string; 这是在一个类中完成的,该类位于一个单独的程序集中,具有自己的app.config文件。现在,如果我在app.config中指定键/值对: <appSettings> <add key="SomeKey" val
appsetingsreader()
方法从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
,而不是主(父)程序集?在这种情况下,可以使用该类。它允许您从不同的位置打开配置文件。要打开.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"];
谢谢你的回复。这似乎是个好办法。但我还有一个问题:如何在我的外部程序集中获取
app.config
的路径?这似乎是一个简单而愚蠢的问题,但每种方法都会让我进入主应用程序的目录,而不是外部程序集的目录。