我想通过传递命令行参数来覆盖标准app.config的使用。如何更改默认应用程序配置文件,以便在我访问ConfigurationManager.AppSettings时访问命令行上指定的配置文件?

编辑:

事实证明,加载不同于EXE加上.config名称的配置文件的正确方法是使用OpenMappedExeConfiguration。例如。

ExeConfigurationFileMap configFile = new ExeConfigurationFileMap();
configFile.ExeConfigFilename = Path.Combine(Environment.CurrentDirectory, "Shell2.exe.config");
currentConfiguration = ConfigurationManager.OpenMappedExeConfiguration(configFile,ConfigurationUserLevel.None);


这部分起作用。我可以在appSettings部分中看到所有键,但是所有值均为null。

最佳答案

因此,以下代码实际上使我可以实际访问默认文件以外的配置文件中的appSettings部分。

ExeConfigurationFileMap configFile = new ExeConfigurationFileMap();
configFile.ExeConfigFilename = Path.Combine(Environment.CurrentDirectory, "Alternate.config");
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFile,ConfigurationUserLevel.None);

AppSettingsSection section = (AppSettingsSection)config.GetSection("appSettings");
string MySetting = section.Settings["MySetting"].Value;

10-05 19:23