C#从任意位置打开配置文件

Ron*_*Ron 2 c# configurationmanager

在:

使用ConfigurationManager从任意位置加载配置, 我发现了一种解决方案。我正在处理的项目使用网络上的appSettings.config文件位置。但是,当我尝试使用引用的代码时:

 System.Configuration.ConfigurationFileMap fileMap = new ConfigurationFileMap("Z:\Settings\appSettings.config"); //Path to your config file

 System.Configuration.Configuration configuration = System.Configuration.ConfigurationManager.OpenMappedMachineConfiguration(fileMap);
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都很好。appSettings.config文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="Environment" value="Development" />
  </appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

但是然后我到达以下行:

var settings = configuration.AppSettings.Settings;
Run Code Online (Sandbox Code Playgroud)

或使用它的任何东西(例如Settings.Count),都会收到无效的强制转换异常。基本上,我如何从中获得“环境”的价值?

Ron*_*Ron 6

我发现这有效:

System.Configuration.ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();

fileMap.ExeConfigFilename = @"Z:\appSettings.config"; //Path to your config file

System.Configuration.Configuration configuration = System.Configuration.ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); // OpenMappedMachineConfiguration(fileMap);
return configuration.AppSettings.Settings["Environment"].Value;
Run Code Online (Sandbox Code Playgroud)

这可以正常工作。