Как создать параметр конфигурации
Создание файла CFG
CFG (Configuration File) – формат файлов, несущих в себе информацию о конфигурациях ПО. Используется он в самых разнообразных приложениях и играх. Файл с расширением CFG можно создать и самостоятельно, воспользовавшись одним из доступных способов.
Варианты создания файла конфигурации
Мы рассмотрим только варианты создания CFG-файлов, а их содержимое будет зависеть уже от ПО, к которому будет применена Ваша конфигурация.
Способ 1: Notepad++
С помощью текстового редактора Notepad++ можно легко создать файл в нужном формате.
А можно просто воспользоваться кнопкой «Новый» на панели.
Или используйте кнопку сохранения на панели.
Способ 2: Easy Config Builder
Для создания файлов конфигурации существуют и специализированные программы, например, Easy Config Builder. Она разрабатывалась для создания файлов CFG игры Counter Strike 1.6, но и для остального ПО этот вариант также приемлем.
Или используйте кнопку «Новый».
Для этих же целей на панели имеется соответствующая кнопка.
Способ 3: Блокнот
Создать CFG можно и через обычный Блокнот.
Способ 4: Microsoft WordPad
Последней рассмотрим программу, которая также обычно предустановлена в Windows. Microsoft WordPad станет отличной альтернативой всем перечисленным вариантам.
Или можно нажать специальный значок.
Как видите, любой из способов предполагает схожую последовательность действий для создания CFG-файла. Через эти же программы его можно будет открыть и внести правки.
Помимо этой статьи, на сайте еще 12244 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Параметры конфигурации для анализа кода
Чаще всего вам придется настраивать такой параметр, как серьезность правила. Уровень серьезности можно настроить отдельно для всех правил анализатора, включая правила качества кода и правила стиля кода. Например, чтобы использовать правило как предупреждение, добавьте в файл EditorConfig следующую пару «ключ — значение».
Кроме того, можно настроить поведение правила с помощью дополнительных параметров:
Ниже приведен пример синтаксиса для настройки серьезности конкретного правила в файле конфигурации анализатора:
Общие параметры
Эти параметры применяются к анализу кода в целом. Вы не можете применять их только к одному правилу или набору правил.
Исключение созданного кода
Параметры для конкретных правил
Параметры для конкретных правил могут применяться к одному правилу, к набору правил или ко всем правилам. Доступны следующие параметры для конкретных правил:
Степень серьезности
В следующей таблице представлены разные уровни серьезности правил, которые можно настроить для всех правил анализатора, включая правила качества кода и стиля кода.
Сведения о том, как проявляются уровни серьезности правил в Visual Studio, см. в разделе об уровнях серьезности.
Область
Чтобы задать серьезность правила для одного правила, используйте следующий синтаксис.
Чтобы задать серьезность по умолчанию для категории правил, используйте следующий синтаксис. Категория для каждого правила указана на странице справки соответствующего правила, например CA1000.
Чтобы задать серьезность правила по умолчанию для всех правил анализатора, используйте следующий синтаксис.
Если вы задаете уровень серьезности одной записью для нескольких правил, то есть для категории правил или для всех правил, этот уровень серьезности применяется только к тем правилам, которые включены по умолчанию. Чтобы применить его к правилам, отключенным по умолчанию, нужно выполнить одно из следующих действий:
Приоритет
Если к одному идентификатору правила могут применяться несколько записей конфигурации серьезности, приоритет определяется следующим образом:
Рассмотрим следующий пример с правилом CA1822, которое имеет категорию Performance (Производительность):
Сведения о распределении приоритетов между файлами см. в разделе «Приоритет» статьи о файлах конфигурации.
Настройка приложений с использованием файлов конфигурации
С помощью классов из пространства имен System.Configuration управляемый код может считывать установки из конфигурационных файлов, но не записывать их в эти файлы.
В этом разделе описан синтаксис файлов конфигурации и приведены сведения о трех типах таких файлов: конфигурации компьютера, приложения и безопасности.
Формат файлов конфигурации
Как и во всех XML-файлах, в файлах конфигурации учитывается регистр.
Файлы конфигурации компьютеров
В файле конфигурации компьютера, Machine.config, задаются параметры, влияющие на работу компьютера в целом. Этот файл находится в каталоге %путь установки среды выполнения%\Config. В файле Machine.config задаются параметры конфигурации для привязки сборок компьютера, встроенных каналов удаленного взаимодействия и ASP.NET.
При развертывании приложения с помощью команды XCOPY файл конфигурации компьютера не копируется.
Дополнительные сведения об использовании файла конфигурации компьютера средой CLR для привязки сборок см. в разделе Обнаружение сборок в среде выполнения.
Файлы конфигурации приложений
В файле конфигурации приложения находятся параметры приложения. В этом файле содержатся параметры конфигурации, считываемые средой CLR (например, политика привязки сборок, удаленные объекты и т. д.) и приложением.
Имя и расположение файла конфигурации приложения зависят от места размещения приложения, которым может быть одно из указанных ниже.
Приложение, размещенное в исполняемом файле.
Такие приложения имеют два файла конфигурации: исходный файл конфигурации, который изменяется разработчиком во время разработки, и выходной файл, распространяемый с приложением.
При разработке в Visual Studio разместите исходный файл конфигурации приложения в каталоге проекта и установите для его свойства Копировать в выходной каталог значение Всегда копировать или Копировать, если новее. Имя файла конфигурации — это имя приложения с расширением CONFIG. Например, исходный файл конфигурации приложения myApp.exe должен называться myApp.exe.config.
Visual Studio автоматически копирует исходный файл конфигурации в каталог, где находится скомпилированная сборка, чтобы создать выходной файл конфигурации, развертываемый вместе с приложением. В некоторых случаях Visual Studio может изменить выходной файл конфигурации; дополнительные сведения см. в разделе Перенаправление версий сборки на уровне приложения статьи Перенаправление версий сборки.
Приложение, размещенное в ASP.NET.
Дополнительные сведения о файлах конфигурации ASP.NET см. в разделе Параметры конфигурации ASP.NET.
Приложение, размещенное в Internet Explorer.
В этом теге location — это URL-адрес файла конфигурации. Таким образом задается базовая папка приложения. Файл конфигурации должен находиться на том же веб-сайте, что и приложение.
Файлы конфигурации безопасности
В файлах конфигурации безопасности содержатся сведения об иерархии групп кода и наборах разрешений, связанных с уровнем политики. Для изменения политики безопасности настоятельно рекомендуется использовать средство политики безопасности доступа кода (Caspol.exe), что гарантирует целостность файлов конфигурации безопасности.
Ниже приведено расположение файлов конфигурации безопасности.
Файл конфигурации политики предприятия: %путь-установки-среды-выполнения%\Config\Enterprisesec.config
Файл конфигурации политики компьютера: %путь-установки-среды-выполнения%\Config\Security.config
Файл конфигурации политики пользователя: %USERPROFILE%\Application data\Microsoft\CLR security config\vxx.xx\Security.config
в этом разделе
Практическое руководство. Поиск сборок с помощью DEVPATH
Описание процесса настройки среды выполнения для использования переменной среды DEVPATH при поиске сборок.
Перенаправление версий сборки
Инструкции по указанию местоположения и версии сборки, которая должна использоваться приложением.
Указание расположения сборки
Сведения о том, как указать среде выполнения, где она должна осуществлять поиск сборки.
Настройка криптографических классов
Описание процесса сопоставления имени алгоритма криптографическому классу и идентификатора объекта в криптографическому алгоритму.
Практическое руководство. Создание политики издателя
Сведения о том, куда и каким образом нужно добавить файл политики издателя, чтобы задать перенаправление сборки и параметры базового каталога кода.
Схема файла конфигурации
Описывается иерархия схемы для запуска, среды выполнения, сети и других типов параметров конфигурации.
Практическое руководство. Создание и изменение конфигураций
Вы можете создать несколько конфигураций сборки для решения. Например, можно настроить отладочную сборку, которую ваши тест-инженеры могут использовать для поиска и устранения неполадок, или настроить разные типы сборок, которые можно передавать разным клиентам.
Этот раздел относится к Visual Studio в Windows. Информацию о Visual Studio для Mac см. в статье Создание и изменение конфигураций в Visual Studio для Mac.
Создание конфигураций сборки
Диалоговое окно Диспетчер конфигураций служит для выбора или изменения существующих конфигураций сборки, а также для создания новых.
Чтобы открыть диалоговое окно Диспетчер конфигураций, в обозревателе решений откройте контекстное меню для решения и выберите пункт Диспетчер конфигураций.
Если пункт Диспетчер конфигураций не отображается в контекстном меню, он должен отображаться в меню Сборка в строке меню. Если его нет в обоих меню, в строке меню выберите Сервис > Параметры, а затем в левой области диалогового окна Параметры разверните узел Проекты и решения > Общие и в области справа установите флажок Показывать дополнительные конфигурации построения.
В диалоговом окне Диспетчер конфигураций в раскрывающемся списке Активная конфигурация решения можно выбрать конфигурацию сборки для всего решения, изменить существующую или создать новую конфигурацию. Раскрывающийся список Активная платформа решения можно использовать для выбора платформы, для которой предназначена конфигурация, или для добавления новой платформы. В области Конфигурации проектов перечислены все проекты в решении. Для каждого проекта можно выбрать конфигурацию и платформу проекта, изменить уже существующую или создать новую конфигурацию или добавить новую платформу. Кроме того, можно установить флажки, которые указывают, включается ли конкретный проект при использовании конфигурации на уровне решения для сборки или развертывания решения.
После настройки необходимых конфигураций можно задать свойства проекта, которые подходят для этих конфигураций.
Задание свойств на основе конфигураций
Дополнительные сведения о параметрах страницы свойств см. в статье Управление свойствами проекта и решения.
Создание конфигурации проекта
Откройте диалоговое окно Диспетчер конфигураций.
Выберите проект в столбце Проект.
В раскрывающемся списке Конфигурация для этого проекта выберите Создать.
Откроется диалоговое окно Создание конфигурации проекта.
В поле Имя введите имя новой конфигурации.
Чтобы использовать значения свойств из существующей конфигурации проекта, в раскрывающемся списке Копировать параметры из выберите конфигурацию.
Чтобы одновременно создать конфигурацию на уровне решения, установите флажок Создать новую конфигурацию решения.
Переименование конфигурации проекта
Откройте диалоговое окно Диспетчер конфигураций.
В столбце Проект выберите проект, который содержит нужную конфигурацию проекта.
В раскрывающемся списке Конфигурация для этого проекта выберите Изменить.
Откроется диалоговое окно Изменение конфигураций проекта.
Выберите имя конфигурации проекта, которую требуется изменить.
Выберите Переименовать, а затем введите новое имя.
Создание и изменение конфигураций сборки на уровне решения
Создание конфигурации сборки на уровне решения
Откройте диалоговое окно Диспетчер конфигураций.
В раскрывающемся списке Активная конфигурация решения выберите Создать.
Откроется диалоговое окно Создание конфигурации решения.
В текстовом поле Имя введите имя новой конфигурации.
Чтобы использовать параметры из существующей конфигурации решения, в раскрывающемся списке Копировать параметры из выберите конфигурацию.
Если вы хотите одновременно создать конфигурации проекта, установите флажок Создать новые конфигурации проекта.
Переименование конфигурации сборки на уровне решения
Откройте диалоговое окно Диспетчер конфигураций.
В раскрывающемся списке Активная конфигурация решения выберите Изменить.
Откроется диалоговое окно Изменение конфигураций решения.
Выберите имя конфигурации решения, которую требуется изменить.
Выберите Переименовать, а затем введите новое имя.
Изменение конфигурации сборки на уровне решения
Откройте диалоговое окно Диспетчер конфигураций.
В раскрывающемся списке Активная конфигурация решения выберите нужную конфигурацию.
В области Конфигурации проектов для каждого проекта выберите нужную конфигурацию и платформу, а также выберите, требуется ли выполнять его сборку и развертывание.
С момента своего выпуска приложения и компоненты ASP.NET обращались к файлу web.config, чтобы загрузить любые параметры, необходимые для работы. Однако добавление пользовательских настроек для добавления гибкости и надежности в приложение или компонент не так просто, как хотелось бы большинству. В этой статье вы узнаете, как написать необходимые классы для обработки элементов конфигурации XML и использовать параметры, содержащиеся в вашем коде.
Каждые несколько недель мы пересматриваем некоторые из любимых постов нашего читателя на протяжении всей истории сайта. Этот учебник был впервые опубликован в ноябре 2012 года.
Настройки «ключ / значение», безусловно, могут быть полезны во многих случаях, но настройки просто недостаточно гибки для надежных или сложных компонентов или настроек.
К счастью, Microsoft позволяет разработчикам писать классы, которые добавляют программный доступ к настраиваемым параметрам конфигурации, содержащимся в web.config.
Раздел конфигурации
Настройки в файле web.config подразделяются на разделы конфигурации. Например, параметры, содержащиеся в разделе к параметрам ASP.NET для вашего приложения. Вы можете изменить схему аутентификации вашего приложения, а также добавить или удалить обработчики HTTP для выполнения определенных функций для определенных типов файлов. Раздел позволяет вам управлять многими настройками IIS7, не имея прямого доступа к IIS7.
Конфигурация, используемая в качестве примера в этом руководстве, предназначена для компонента, который извлекает каналы RSS или Atom. Он не выполняет никакого анализа, поскольку это выходит за рамки данного руководства. Вместо жесткого кодирования списка каналов для извлечения, компонент ищет свою конфигурацию, содержащую имена и URL-адреса каналов для извлечения. Компонент называется FeedRetriever, и желаемая XML-структура его конфигурации выглядит следующим образом:
Написание обработчика конфигурации
Классы на основе ConfigurationElement представляют отдельные элементы; это строительный блок раздела конфигурации. Типы, производные от ConfigurationElementCollection, просто представляют элементы, которые содержат более одного типа элемента. Из конфигурации, указанной выше, элемент представлен классом, производным от ConfigurationElementCollection, а элементы представлены классом на основе ConfigurationElement.
Представление элемента
Следующий код является полным кодом для класса FeedElement:
Класс ConfigurationElement служит индексатором для базовой коллекции свойств конфигурации (отсюда обозначение индексатора этого Как создать параметр конфигурации). Используя ключевое слово this и получая доступ к базовому свойству с помощью строкового ключа, вы можете получить и установить значение свойства без необходимости в закрытом поле для хранения этих данных. Базовая коллекция свойств хранит данные как тип Object; следовательно, вы должны привести значение к соответствующему типу, если хотите что-то с ним сделать.
Есть два возможных решения этой проблемы. Первый подход изменяет регулярное выражение, чтобы разрешить пустые строки. Второй подход назначает значение по умолчанию для свойства. Это не имеет значения в данном конкретном случае. Даже со значением по умолчанию атрибут url по-прежнему является обязательным атрибутом в элементе — приложение выдает исключение ConfigurationErrorsException, если элемент не имеет атрибута url.
Есть несколько других атрибутов валидатора в пространстве имен System.Configuration для проверки данных, назначенных свойствам, и атрибутов XML, с которыми они сопоставляются. Ниже перечислены все атрибуты валидатора в пространстве имен System.Configuration:
Написание класса коллекции элементов
XML-представление элемента является представлением коллекции элементов feed. Аналогично, программное представление элемента является коллекцией объектов FeedElement. Этот класс, называемый FeedElementCollection, является производным от абстрактного класса ConfigurationElementCollection.
Класс ConfigurationElementCollection содержит несколько членов, но только два помечены как абстрактные. Таким образом, простейшая реализация ConfigurationElementCollection имеет два метода:
Имея это в виду, просмотрите полный код для класса FeedElementCollection ниже:
ConfigurationCollectionAttribute украшает этот класс коллекции. Первым параметром атрибута является объект Type — тип элементов, содержащихся в коллекции. В данном случае это тип FeedElement. После параметра типа есть несколько именованных параметров, которые вы можете передать атрибуту. Они перечислены ниже:
Написание класса FeedRetreiverSection
Изменение web.config
Закончив обработчик конфигурации, вы можете добавить соответствующие элементы в web.config. Раздел может находиться в любом месте файла, если он является прямым потомком корневого элемента (элемента ). Размещение его в другом разделе конфигурации приводит к ошибке.
Теперь ваше приложение правильно настроено на использование классов FeedRetrieverSection, FeedElementCollection и FeedElement, чтобы предоставить вам программный доступ к пользовательским настройкам, содержащимся в разделе конфигурации в файле web.config. Итак, как вы получаете доступ к этим настройкам из своего кода?
Доступ к данным конфигурации из кода
Пространство имен System.Configuration содержит статический класс с именем ConfigurationManager. Если вы используете раздел для размещения строк подключения, вы, по крайней мере, знакомы с ConfigurationManager. У него есть метод GetSection (), который принимает строку, содержащую имя раздела конфигурации для извлечения. Следующий код демонстрирует это (предположим, что использование System.Configuration находится в верхней части файла кода):
Метод GetSection () возвращает значение типа Object, поэтому оно должно быть приведено к тому типу, который является обработчиком для этого раздела. Этот код извлекает раздел с именем feedRetriever и возвращает результат как FeedRetrieverSection. Когда у вас есть объект, вы можете начать доступ к данным конфигурации программно.
Чтобы дать вам представление о том, как можно использовать параметры конфигурации в вашем компоненте или приложении, следующий код является базовой реализацией компонента FeedRetriever.
Сначала объявляется статическая переменная _Config типа FeedRetreiverSection, которой присваивается значение путем вызова ConfigurationManager.GetSection (). Создание статической переменной — это выбор дизайна. Таким образом, все члены класса, как экземпляры, так и статические, получат доступ к настройкам конфигурации, не делая многократных вызовов GetSection ().
Получив обработчик раздела с помощью GetSection (), вы получаете полный доступ к объектам, созданным из ваших классов-обработчиков. Первая строка GetFeeds () — это цикл для каждого цикла, который проходит по всем объектам FeedElement, содержащимся в объекте FeedElementCollection, возвращаемом свойством Feeds. Это дает вам прямой доступ к этим объектам FeedElement, упрощая доступ к имени каждого канала, URL-адресу и настройкам кэша.
Во время каждой итерации цикла метод делает запрос, используя свойство Url объекта FeedElement. Если запрос приводит к успеху, данные фида извлекаются и сохраняются в переменной feedData. Затем код проверяет свойство Cache объекта FeedElement, чтобы определить, следует ли кэшировать канал. Кэширование канала включает создание имени файла с использованием свойства Name объекта FeedElement и текущей даты и времени. Затем объект StreamWriter создает файл и записывает в него данные канала.
Как вы можете видеть, использование классов обработчиков раздела конфигурации является ключом к получению и использованию пользовательских настроек, находящихся в web.config. Это, безусловно, требует от вас больше времени и усилий, но, безусловно, значительно упрощает настройку вашего приложения или компонента для вас и других разработчиков.