Поделиться через


Использование 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 во время выполнения.

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

  1. Запустите Visual Studio .NET или Visual Studio.

  2. В меню Файл последовательно выберите команды Создатьи Проект.

  3. Выберите Visual C# в разделе "Типы проектов" и выберите консольное приложение в разделе "Шаблоны". Назовите проект ConConfig. По умолчанию Visual C# создает класс с именем Program.

    Примечание.

    В Visual Studio .NET выберите проекты Visual C# в разделе "Типы проектов" и выберите консольное приложение в разделе "Шаблоны". Назовите проект ConConfig. По умолчанию Visual C# создает класс с именем Class1.

  4. Убедитесь, что окно Обозреватель решений отображается. Если он не отображается, нажмите сочетание клавиш CTRL+ALT+L.

  5. В Обозреватель решений щелкните правой кнопкой мыши имя проекта, выберите "Добавить" и выберите "Создать элемент".

  6. В списке "Добавить новый элемент" выберите XML-файл.

  7. В текстовом поле "Имя" введите App.config и нажмите кнопку "Добавить".

  8. Вы можете использовать файл конфигурации приложения для сбора пользовательских параметров приложения, сохраненных в формате 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>
    
  9. В Обозреватель решений дважды щелкните Program.cs, чтобы отобразить окно кода. Добавьте следующие инструкции в модуль кода.

    Примечание.

    Эти инструкции должны отображаться перед любыми другими операторами в файле.

    using System.Configuration;
    using System.Collections.Specialized;
    
  10. Добавьте ссылку на System.Configuration.dll , выполнив следующие действия:

    1. В меню Проект выберите пункт Добавить ссылку.
    2. В диалоговом окне "Добавить ссылку" выберите вкладку .NET.
    3. Найдите и выберите имя System.Configurationкомпонента .
    4. нажмите кнопку ОК.
  11. Чтобы сохранить значение из ключа файла конфигурации в <appSettings> разделе файла конфигурации, объявите строковую переменную в Main разделе следующим образом:

    string sAttr;
    
  12. Чтобы получить значение для указанного ключа из <appSettings> раздела файла конфигурации, используйте Get метод AppSettings свойства класса ConfigurationManager . Класс ConfigurationManager находится в пространстве имен System.Configuration. AppSettings.Get Когда метод получает строковый входной параметр, содержащий ключ, приложение извлекает значение, связанное с ключом.

    Следующий код извлекает значение атрибута Key0 из связанного файла конфигурации. Затем код помещает это значение в строковую sAttr переменную. Если ключ не существует для этого значения, ничего не хранится в sAttr.

    sAttr = ConfigurationManager.AppSettings.Get("Key0");
    
  13. Чтобы отобразить значение, полученное приложением в окне консоли, используйте Console.WriteLine следующее:

    Console.WriteLine("The value of Key0 is "+sAttr);
    
  14. Для получения всех пар "ключ-значение" в <appSettings> разделе можно использовать одну ссылку на AppSettings свойство. При использовании AppSettings свойства приложение возвращает все связанные пары "ключ-значение". Эти пары хранятся в типе NameValueCollection . Содержит NameValueCollection записи ключа и значения для каждого ключа, извлекаемого приложением. Класс NameValueCollection находится в пространстве имен System.Collections.Specialized.

    NameValueCollection sAll ;
    sAll = ConfigurationManager.AppSettings;
    
  15. Свойство 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 является обязательным суффиксом.

Ссылки