Использование Visual C# для хранения и получения пользовательских сведений из файла конфигурации приложения
В этой статье описывается, как хранить пользовательские сведения из файла конфигурации, который можно получить позже во время выполнения соответствующим приложением. Полезно определить данные, связанные с приложением.
Примечание.
Код в этой статье предназначен для платформа .NET Framework 2.0 и более поздних версий. Сведения о конкретных версиях ConfigurationManager
, к которым применяется класс, см. в разделе "Применимо к разделу ".
Исходная версия продукта: Visual C#
Исходный номер базы знаний: 815786
Требования
В следующем списке описаны рекомендуемые аппаратные и программные средства.
- Microsoft Windows
- Visual C#
В этой статье предполагается, что вы знакомы со следующими разделами:
- Расширяемый язык разметки (XML)
- Файлы конфигурации .NET
Создание консольного приложения, которое считывает файл конфигурации
Параметры приложения можно хранить в файле конфигурации, связанном с приложением. Файлы конфигурации сохраняются в формате XML.
System.Collections.Specialized
Пространства System.Configuration
имен в платформа .NET Framework включают необходимые классы для получения сведений из файла конфигурации приложения .NET во время выполнения.
Чтобы создать консольное приложение, которое считывает содержимое связанного файла конфигурации во время выполнения, выполните следующие действия.
Запустите Visual Studio .NET или Visual Studio.
В меню Файл последовательно выберите команды Создатьи Проект.
Выберите Visual C# в разделе "Типы проектов" и выберите консольное приложение в разделе "Шаблоны". Назовите проект ConConfig. По умолчанию Visual C# создает класс с именем Program.
Примечание.
В Visual Studio .NET выберите проекты Visual C# в разделе "Типы проектов" и выберите консольное приложение в разделе "Шаблоны". Назовите проект ConConfig. По умолчанию Visual C# создает класс с именем Class1.
Убедитесь, что окно Обозреватель решений отображается. Если он не отображается, нажмите сочетание клавиш CTRL+ALT+L.
В Обозреватель решений щелкните правой кнопкой мыши имя проекта, выберите "Добавить" и выберите "Создать элемент".
В списке "Добавить новый элемент" выберите XML-файл.
В текстовом поле "Имя" введите App.config и нажмите кнопку "Добавить".
Вы можете использовать файл конфигурации приложения для сбора пользовательских параметров приложения, сохраненных в формате key/value. Элементы можно включить
<add>
в<appSettings>
раздел связанного файла конфигурации. Каждая пара "ключ-значение" имеет один<add>
элемент. Элемент<add>
имеет следующий формат:<add key="Key0" value="0" />
<appSettings>
Добавьте раздел с<add>
элементами в файл конфигурации между<configuration>
тегами и</configuration>
тегами.Например, следующий файл конфигурации содержит раздел, указывающий
<appSettings>
три пары "ключ-значение":<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="Key0" value="0" /> <add key="Key1" value="1" /> <add key="Key2" value="2" /> </appSettings> </configuration>
В Обозреватель решений дважды щелкните Program.cs, чтобы отобразить окно кода. Добавьте следующие инструкции в модуль кода.
Примечание.
Эти инструкции должны отображаться перед любыми другими операторами в файле.
using System.Configuration; using System.Collections.Specialized;
Добавьте ссылку на System.Configuration.dll , выполнив следующие действия:
- В меню Проект выберите пункт Добавить ссылку.
- В диалоговом окне "Добавить ссылку" выберите вкладку .NET.
- Найдите и выберите имя
System.Configuration
компонента . - нажмите кнопку ОК.
Чтобы сохранить значение из ключа файла конфигурации в
<appSettings>
разделе файла конфигурации, объявите строковую переменную вMain
разделе следующим образом:string sAttr;
Чтобы получить значение для указанного ключа из
<appSettings>
раздела файла конфигурации, используйтеGet
методAppSettings
свойства класса ConfigurationManager . КлассConfigurationManager
находится в пространстве именSystem.Configuration
.AppSettings.Get
Когда метод получает строковый входной параметр, содержащий ключ, приложение извлекает значение, связанное с ключом.Следующий код извлекает значение атрибута
Key0
из связанного файла конфигурации. Затем код помещает это значение в строковуюsAttr
переменную. Если ключ не существует для этого значения, ничего не хранится вsAttr
.sAttr = ConfigurationManager.AppSettings.Get("Key0");
Чтобы отобразить значение, полученное приложением в окне консоли, используйте
Console.WriteLine
следующее:Console.WriteLine("The value of Key0 is "+sAttr);
Для получения всех пар "ключ-значение" в
<appSettings>
разделе можно использовать одну ссылку наAppSettings
свойство. При использованииAppSettings
свойства приложение возвращает все связанные пары "ключ-значение". Эти пары хранятся в типеNameValueCollection
. СодержитNameValueCollection
записи ключа и значения для каждого ключа, извлекаемого приложением. КлассNameValueCollection
находится в пространстве именSystem.Collections.Specialized
.NameValueCollection sAll ; sAll = ConfigurationManager.AppSettings;
Свойство
AllKeys
NameValueCollection
ссылается на массив строк, имеющий запись для каждого ключа, извлекаемого приложением. Используйте конструкцию foreach для итерации поAllKeys
массиву для доступа к каждому ключу, извлекаемого приложением. Каждая записьAllKeys
ключа является строковым типом данных.foreach
Внутри конструкции используйтеConsole.WriteLine
для отображения ключа и связанного с ним значения в окне консоли. Текущий ключ, вs
который находятся процессы приложения. Используйте его в качестве индекса в объекте для получения связанногоsAllNameValueCollection
значения.foreach (string s in sAll.AllKeys) Console.WriteLine("Key: "+ s + " Value: " + sAll.Get(s)); Console.ReadLine();
Полный листинг кода
using System;
using System.Configuration;
using System.Collections.Specialized;
namespace ConConfig
{
class Program
{
static void Main(string[] args)
{
string sAttr;
// Read a particular key from the config file
sAttr = ConfigurationManager.AppSettings.Get("Key0");
Console.WriteLine("The value of Key0: " + sAttr);
// Read all the keys from the config file
NameValueCollection sAll;
sAll = ConfigurationManager.AppSettings;
foreach (string s in sAll.AllKeys)
Console.WriteLine("Key: " + s + " Value: " + sAll.Get(s));
Console.ReadLine();
}
}
}
Полное описание файла конфигурации (ConConfig.exe.config)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Key0" value="0" />
<add key="Key1" value="1" />
<add key="Key2" value="2" />
</appSettings>
</configuration>
Убедитесь, что он работает
Нажмите клавишу F5, чтобы запустить код. Окно консоли должно отображать пары "ключ-значение" из <appSettings>
раздела связанного файла конфигурации следующим образом:
The value of Key0: 0
Key: Key0 Value:0
Key: Key1 Value:1
Key: Key2 Value:2
Устранение неполадок
Файл конфигурации сохраняется в формате XML. Обязательно следуйте всем правилам синтаксиса XML. Помните, что XML учитывает регистр. Если XML-код не является хорошо сформированным или если элемент не указан, вы получите
System.Configuration.Configuration
исключение.Например, если добавить ключевой атрибут
<add>
элемента с верхним регистром K вместо нижнего регистра k, или если<appSettings>
раздел отображается как<AppSettings>
(с верхним регистром A вместо нижнего регистра), вы получите сообщение об ошибке.Файл конфигурации должен быть сохранен в той же папке, что и связанное с ним приложение.
Для имени файла конфигурации необходимо использовать следующий синтаксис:
<ApplicationName>.<ApplicationType.config>Где <ApplicationName> — это имя приложения. <ApplicationType> — это тип приложения, например
.exe
. И.config
является обязательным суффиксом.