Самый простой способ иметь файл конфигурации в приложении Windows Forms С#

Я действительно новичок в .NET, и я до сих пор не понял, как работают файлы конфигурации.

Каждый раз, когда я ищу в google об этом, я получаю результаты о web.config, но я пишу приложение для форм Windows.

Я понял, что мне нужно использовать пространство имен System.Configuration, но документация не помогает.

Как определить, что мой файл конфигурации XYZ.xml? Или у него есть "имя по умолчанию" для файла конфигурации? Я все еще не понял этого.

Также, как я могу определить новый раздел, действительно ли мне нужно создать класс, который наследуется от ConfigurationSection?

Я хотел бы просто иметь конфигурационный файл с такими значениями, как это:

<MyCustomValue>1</MyCustomValue>
<MyCustomPath>C:\Some\Path\Here</MyCustomPath>

Есть ли простой способ сделать это? Можете ли вы просто объяснить, как читать и писать из/в простой файл конфигурации?

Ответ 1

Вы хотите использовать App.Config.

Когда вы добавляете новый элемент в проект, есть файл Application Configuration. Добавьте это.

Затем вы добавляете ключи в раздел конфигурации/настройки приложения

Как

<configuration>
 <appSettings>
  <add key="MyKey" value="false"/>

Доступ к элементам осуществляется

System.Configuration.ConfigurationSettings.AppSettings["MyKey"];

Это работает в .net 2 и выше.

Ответ 2

Разъяснение предыдущих ответов...

1) Добавьте новый файл в свой проект (Add- > New Item- > Файл конфигурации приложения)

2) Новый файл конфигурации появится в обозревателе решений в виде App.Config.

3) Добавьте свои настройки в этот файл, используя следующее в качестве шаблона

<configuration>
  <appSettings>
    <add key="setting1" value="key"/>
  </appSettings>
  <connectionStrings>
    <add name="prod" connectionString="YourConnectionString"/>
  </connectionStrings>
</configuration>

4) Извлеките их так:

private void Form1_Load(object sender, EventArgs e)
{
    string setting = ConfigurationManager.AppSettings["setting1"];
    string conn = ConfigurationManager.ConnectionStrings["prod"].ConnectionString;
}

5) При построении ваша выходная папка будет содержать файл с именем <assemblyname> .exe.config. Это будет копия файла App.Config. Разработчик не должен выполнять дальнейшую работу для создания этого файла.

Ответ 3

Из быстрого чтения предыдущих ответов они выглядят правильными, но не похоже, что кто-то упомянул о новых настройках в VS 2008. Он по-прежнему использует app.config(скопированный во время компиляции в файл YourAppName.exe.config), но есть виджет пользовательского интерфейса для установки свойств и указания их типов. Дважды щелкните Settings.settings в папке "Свойства" проекта.

Наилучшая часть заключается в том, что доступ к этому свойству из кода является typeafe - компилятор будет обнаруживать очевидные ошибки, например, ошибочное имя свойства. Например, к ресурсу, называемому MyConnectionString в app.config, можно получить доступ, например:

string s = Properties.Settings.Default.MyConnectionString;

Ответ 4

Вам следует создать файл App.config(очень похожий на web.config)

Вы должны щелкнуть правой кнопкой мыши по проекту, добавить новый элемент, новый "Файл конфигурации приложения".

Убедитесь, что вы добавили с помощью System.Configuration в свой проект.

Затем вы можете добавить к нему значения

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="setting1" value="key"/>
  </appSettings>
  <connectionStrings>
    <add name="prod" connectionString="YourConnectionString"/>
  </connectionStrings>
</configuration>

    private void Form1_Load(object sender, EventArgs e)
    {
        string setting = ConfigurationManager.AppSettings["setting1"];
        string conn = ConfigurationManager.ConnectionStrings["prod"].ConnectionString;
    }

Просто отметьте в соответствии с Microsoft, вы должны использовать ConfigurationManager вместо ConfigurationSettings. (см. раздел замечаний)   "Класс ConfigurationSettings обеспечивает только обратную совместимость. Для новых приложений вы должны использовать класс ConfigurationManager или класс WebConfigurationManager."

Ответ 5

Имя по умолчанию для файла конфигурации: [yourexe].exe.config. Таким образом, у notepad.exe будет файл конфигурации с именем notepad.exe.config в той же папке, что и программа. Это общий файл конфигурации для всех аспектов среды CLR и Framework, но может содержать ваши собственные настройки в <appSettings> node.

Элемент <appSettings> создает коллекцию пар имя-значение, к которой можно получить доступ как System.Configuration.ConfigurationSettings.AppSettings. Однако не удается сохранить изменения в файле конфигурации.

Также можно добавить свои собственные элементы в файл конфигурации - например, для определения структурированного параметра - путем создания класса, реализующего IConfigurationSectionHandler, и добавления его в элемент <configSections> конфигурационного файла. Затем вы можете получить к нему доступ, вызвав ConfigurationSettings.GetConfig.

.NET 2.0 добавляет новый класс System.Configuration.ConfigurationManager, который поддерживает несколько файлов, с переопределением каждого пользователя для каждой системы. Он также поддерживает сохранение измененных конфигураций обратно в файлы настроек.

Visual Studio создает файл с именем App.config, который он копирует в папку EXE с правильным именем, когда проект построен.

Ответ 7

В формах Windows у вас есть app.config, который очень похож на web.config. Но поскольку то, что я вижу, вам нужно, это пользовательские значения, я предлагаю использовать настройки. Для этого откройте свойства проекта и перейдите к настройкам. Если файл настроек не существует, у вас будет ссылка для его создания. Затем вы можете добавить настройки в таблицу, которую видите там, которая будет генерировать как соответствующий XML, так и класс настроек, который можно использовать для загрузки и сохранения настроек. Класс настроек будет называться как DefaultNamespace.Properties.Settings. Затем вы можете использовать код, похожий на:

using DefaultNamespace.Properties;

namespace DefaultNamespace {
    class Class {
        public int LoadMySettingValue() {
            return Settings.Default.MySettingValue;
        }
        public void SaveMySettingValue(int value) {
            Settings.Default.MySettingValue = value;
        }
    }
}

Ответ 8

Я согласен с другими ответами, которые указывают на app.config. Однако, вместо чтения значений непосредственно из app.config, вы должны создать класс утилиты (AppSettings - это имя, которое я использую), чтобы читать их и выставлять их как свойства. Класс AppSettings можно использовать для агрегирования настроек из нескольких магазинов, таких как значения из app.config и информации о версии приложения из сборки (AssemblyVersion и AssemblyFileVersion).

Ответ 10

System.Configuration.ConfigurationSettings.AppSettings [ "MyKey" ];

AppSettings устарела и теперь считается устаревшей. [ссылка]

Кроме того, раздел appSettings файла app.config был заменен секцией applicationSettings.

Как уже упоминалось, вы должны использовать System.Configuration.ConfigurationManager [ссылка], которая является новой для .Net 2.0

Ответ 11

Какую версию .Net и VS вы используете?

При создании нового проекта у вас должен быть файл в вашем решении под названием app.config, который является конфигурационным файлом по умолчанию.