Самый простой способ иметь файл конфигурации в приложении 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 с правильным именем, когда проект построен.
Ответ 6
Лучшая статья (IMHO) о конфигурации .NET Application на CodeProject Распаковывание настроек Mysteries.NET 2.0. И моя следующая любимая (более короткая) статья о разделах в конфигурационных файлах .net Общие сведения о обработчиках разделов - Файл App.config.
Ответ 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).
Ответ 9
Очень простой способ сделать это - использовать собственный собственный Settings
класс.
Ответ 10
System.Configuration.ConfigurationSettings.AppSettings [ "MyKey" ];
AppSettings устарела и теперь считается устаревшей.
[ссылка]
Кроме того, раздел appSettings файла app.config был заменен секцией applicationSettings.
Как уже упоминалось, вы должны использовать System.Configuration.ConfigurationManager
[ссылка], которая является новой для .Net 2.0
Ответ 11
Какую версию .Net и VS вы используете?
При создании нового проекта у вас должен быть файл в вашем решении под названием app.config, который является конфигурационным файлом по умолчанию.