Использование Visual C# для хранения и извлечения пользовательских сведений из файла конфигурации приложения

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

Исходная версия продукта: Visual C#
Исходный номер базы знаний: 815786

Требования

В следующем списке перечислены рекомендуемые оборудование и программное обеспечение, которые вам нужны.

  • Microsoft Windows
  • Visual C#

В этой статье предполагается, что вы знакомы со следующими разделами:

  • язык XML
  • Файлы конфигурации .NET

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

Параметры приложения можно хранить в файле конфигурации, связанном с приложением. Файлы конфигурации сохраняются в формате XML.

Пространства System.Configuration имен и System.Collections.Specialized в платформа .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. Файл конфигурации приложения можно использовать для сбора пользовательских параметров приложения, сохраненных в формате "ключ-значение". Элементы можно включить <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. нажмите OK.
  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();
        }
    }
}

Примечание.

Этот код предназначен для платформа .NET Framework 2.0. Если вы используете платформа .NET Framework 1.0 или платформа .NET Framework 1.1, измените все экземпляры класса на ConfigurationManagerConfigurationSettings.

Полный список файлов конфигурации (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 является обязательным суффиксом.

Ссылки