У меня есть WinForms .exe с App.config, в котором есть набор параметров пользовательской области, которые устанавливаются во время выполнения и сохраняются.
Я хочу иметь возможность использовать приложение WinForms для изменения и сохранения настроек, а затем нажать кнопку, чтобы выполнить некоторую работу на основе этих настроек.
Я также хочу прочитать пользовательские настройки в том же файле .config из sep. консольное приложение, поэтому я могу запланировать работу, которая будет выполнена как запланированная задача.
Каков наилучший способ сделать это?
Обновление:
Я попытался рекомендовать использовать ConfigurationManager.OpenExeConfiguration, как описано в некоторых ответах, вот так.
Configuration config = ConfigurationManager.OpenExeConfiguration("F:\\Dir\\App.exe");
но когда я пытаюсь получить пользовательские настройки, вот так.
string result = config.AppSettings.Settings["DB"].ToString();
Я получаю нулевую ссылку.
Из кода в exe, однако следующее правильно возвращает имя БД.
Properties.Settings.Default.DB
Куда я иду не так?
Обновление 2:
Таким образом, основываясь на некоторых ответах ниже, я теперь могу использовать следующее для извлечения необработанного XML из раздела файла user.config, который меня интересует из sep. ConsoleApp.
System.Configuration.ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = @"D:\PathHere\user.config";
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap,ConfigurationUserLevel.None);
System.Configuration.DefaultSection configSection = (System.Configuration.DefaultSection)config.GetSection("userSettings");
string result = configSection.SectionInformation.GetRawXml();
Console.WriteLine(result);
Но я все еще не могу просто получить значение для интересующего меня элемента.