Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 指定AppSettingsReader()以在不同的app.config中查找密钥_C#_.net_App Config - Fatal编程技术网

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
的路径?这似乎是一个简单而愚蠢的问题,但每种方法都会让我进入主应用程序的目录,而不是外部程序集的目录。