我想通过传递命令行参数来覆盖标准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;