Запись значений в файле app.config

кто-нибудь может помочь мне, как я могу установить / сохранить значения в файле app.config с помощью c #, возможно ли это вообще?

Если вы используете App.Config для хранения значений в разделе или CustomSections, используйте class ConfigurationManager, иначе используйте class XMLDocument.

Вы можете использовать код, отправленный в CodeProject

Попробуйте следующий код:

  Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath); config.AppSettings.Settings.Add("YourKey", "YourValue"); config.Save(ConfigurationSaveMode.Minimal); 

Это сработало для меня 🙂

В Framework 4.5 часть AppSettings.Settings [“key”] в ConfigurationManager читается только, поэтому мне пришлось сначала удалить ключ, а затем добавить его снова, используя следующее:

 Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath); config.AppSettings.Settings.Remove("MySetting"); config.AppSettings.Settings.Add("MySetting", "some value"); config.Save(ConfigurationSaveMode.Modified); 

Не беспокойтесь, вы не получите исключение, если попытаетесь удалить ключ, который не существует.

Этот пост дает хороший совет

  private static string GetSetting(string key) { return ConfigurationManager.AppSettings[key]; } private static void SetSetting(string key, string value) { Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); configuration.AppSettings.Settings[key].Value = value; configuration.Save(ConfigurationSaveMode.Full, true); ConfigurationManager.RefreshSection("appSettings"); } 

Для консольного приложения .NET 4.0 ни один из них не работал для меня. Поэтому я использовал следующее ниже, и это сработало:

 private static void UpdateSetting(string key, string value) { Configuration configuration = ConfigurationManager. OpenExeConfiguration(Assembly.GetExecutingAssembly().Location); configuration.AppSettings.Settings[key].Value = value; configuration.Save(); ConfigurationManager.RefreshSection("appSettings"); } 

Как уже упоминалось, вы можете сделать это с помощью ConfigurationManager.AppSettings.Settings . Но: Использование Settings[key] = value не будет работать, если ключ не существует.
Используя Settings.Add(key, value) , если ключ уже существует, он будет присоединяться к новому значению к его значению, разделенному запятой, что-то вроде

Чтобы избежать этих неожиданных результатов, вам необходимо обрабатывать два сценария

  • Если запись с данным ключом существует? затем обновить его значение
  • если запись с данным ключом не существует? затем создайте новую запись (ключ, значение)

Код

 public static void Set(string key, string value) { var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); var entry = config.AppSettings.Settings[key]; if (entry == null) config.AppSettings.Settings.Add(key, value); else config.AppSettings.Settings[key].Value = value; config.Save(ConfigurationSaveMode.Modified); } 

Для получения дополнительной информации о контрольной entry == null , проверьте этот пост .
Надеюсь, это поможет кому-то.

Да, вы можете – см. ConfigurationManager

Класс ConfigurationManager включает членов, которые позволяют выполнять следующие задачи:

  • Чтение и запись файлов конфигурации в целом.

Научитесь использовать документы , они должны быть вашим первым портом для вызова такого вопроса.

Попробуйте следующее:

 Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); config.AppSettings.Settings[key].Value = value; config.Save(); ConfigurationManager.RefreshSection("appSettings"); 
  string filePath = System.IO.Path.GetFullPath("settings.app.config"); var map = new ExeConfigurationFileMap { ExeConfigFilename = filePath }; try { // Open App.Config of executable Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None); // Add an Application Setting if not exist config.AppSettings.Settings.Add("key1", "value1"); config.AppSettings.Settings.Add("key2", "value2"); // Save the changes in App.config file. config.Save(ConfigurationSaveMode.Modified); // Force a reload of a changed section. ConfigurationManager.RefreshSection("appSettings"); } catch (ConfigurationErrorsException ex) { if (ex.BareMessage == "Root element is missing.") { File.Delete(filePath); return; } MessageBox.Show(ex.Message); } 
  • Изменение константы с помощью указателя не const
  • Как я могу вызвать событие рисования?
  • Как я могу получить текущее местоположение от пользователя в iOS
  • Как создать 5 кнопок и назначить отдельные события кликов динамически?
  • Минимизация всех открытых окон в C #
  • Сортировка сжатых (заблокированных) контейнеров в C ++ с использованием boost или STL
  • Удаление всех неглавных символов с помощью регулярных выражений (регулярные выражения в шаблоне регулярных выражений C #)
  • Получить индекс n-го вхождения строки?
  • Обнаружить, если в C # нажата какая-либо клавиша (не A, B, а любая)
  • JSON.NET - как десериализовать сборку интерфейсных экземпляров?
  • Проходные события мыши для родительского контроля
  • Interesting Posts

    EL доступ к значению карты с помощью ключа Integer

    Динамическое изменение fragmentов внутри узла вкладки fragmentов?

    Синий экран при установке Windows XP

    Связывание ASP.NET – пакет, не обновляющийся после того, как включен файл с добавлением (возвращается 304 не изменен)

    Такая же политика происхождения и CORS (совместное использование ресурсов)

    Как распаковать gzipped данные в массив байтов?

    Как запустить Metro-приложение из командной строки в Windows 8?

    Как получить доступ к свойствам стиля псевдоэлементов с помощью jQuery?

    Использование подстановочных знаков с помощью команды rmdir или rd

    Сравнение чисел в Bash

    Нет доступного экземпляра типа Server.

    Использование SQLite3 с Cygwin

    Конфигурирование истории файлов Windows 8 / 8.1 / 10 с помощью командной строки

    Предупреждение об изъятии с использованием this.refs

    Можно ли определить более одной функции для каждого файла в MATLAB и получить доступ к ним из-за пределов этого файла?

    Давайте будем гением компьютера.