Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Конфигурирование параметров сборки


Автор: adLucem 5.5.2007, 13:02
Статус: черновик (идет проверка написанного материала)
Среда разработки: Visual Studio 2005

Вступление.
Параметры сборки делятся на два вида: параметры приложения (application settings) и параметры пользователя (user settings). Различие между ними в назначении: параметры приложения предназначены для глобального конфигурирования приложения, а параметры пользователя для настройки работы отдельных пользователей. Поэтому параметры приложения связаны с самим приложением и не зависят от конкретного пользователя, который использует приложение, а параметры пользователей относятся только к тому пользователя, который в данный момент работает с приложением. В данном случае понятие пользователя подразумевает обладателя учетной записи Microsoft Windows.


Параметры приложения.
    Это параметры, которые изменяются достаточно редко и связаны, в первую очередь, с администрированием приложения. Эти параметры не предназначены для изменения от имени конкретных пользователей (несмотря на то, что они могут иметь такие привилегии) и являются общими для всех пользователей.

Виды параметров приложения.
  • Внутренние параметры приложения - располагаются внутри конкретной сборки приложения, которая использует эти параметры (для которой они были объявлены при проектировании). Разные сборки в рамках одного приложения могут иметь внутренние параметры приложения с одинаковыми именами. Доступ к этим параметрам осуществляется через пространство имен Properties.Settings. Редактирование этих параметров может происходить только во время разработки приложения - после компиляции они становятся фиксированными.
  • Внешние параметры приложения - располагаются в файле ИмяПриложения.exe.config, который находится в папке приложения. Этот файл используется совместно всеми сборками в рамках приложения, поэтому эти параметры должны иметь уникальные имена не только в рамках отдельной сборки, но и в рамках всего приложения. Доступ к этим параметрам осуществляется с использованием ConfigurationManager из пространства имен System.Configuration сборки System.Configuration. Редактирование этих параметров может происходить после установки приложения путем редактирования файла ИмяПриложения.exe.config.
Внутренние параметры приложения.
    Для создания внутренних параметров приложения нужно создать параметры приложения (Project->Properties->Settings); добавить необходимые параметры (задать имя параметра (Name), тип (Type) и значение (Value)) и установить для них область видимости (Scope) - Приложение (Application). Значения этих параметров будут автоматически добавлены в сборку как константы.

Внешние параметры приложения.
    Для создания внешних параметров приложения необходимо в проекте (Project) создать файл app.config (если он еще не создан; этот файл автоматически создается при добавлении внутренних параметров приложения или параметров пользователя) (Project->[i]Add[/i]->New item...->Application Configuration File). Открываем данный файл в редакторе XML и добавляем следующую секцию:
Код

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="ИмяПараметраПриложения" value="ЗначениеПараметраПриложения"/>
    </appSettings>
</configuration>


    Для доступа к внешним параметрам приложения необходимо добавить ссылку на сборку (Project->Add Reference...System.Configuration. Для использования внешних параметров в целевом файле добавляем ссылку на пространство имен System.Configuration и используем класс ConfigurationManager:
Код

using System;
using System.Windows.Forms;
using System.Configuration;

namespace FooWindowsApplication {
    public partial class FooForm : Form {
        public FooForm ( ) {
            InitializeComponent ( );
            string value = ConfigurationManager.AppSettings [ "ИмяПараметраПриложения" ];
        }
    }
}


    AppSettings возвращает строковое представление параметра приложения, то есть контроль типов в данном случае не выполняется (в отличие от внутренних параметров приложения, где тип указывается явно). Если соответствующий параметр не найден в файле ИмяПриложения.exe.config (например, файл не существует), то возвращается нулевая ссылка (null).
    Файл ИмяПриложения.exe.config может редактироваться вручную, что позволяет изменять параметры приложения после его развертывания.

    Если вы используете, одновременно различные виды параметров приложения, то файл app.config в вашем проекте может содержать различные данные, при этом после развертывания приложения все секции, кроме <appSettings></appSettings> не используются. Поэтому файл, который вы размещаете в папке развернутого приложения, должен содержать только эту секцию.

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

   Параметры пользователя хранятся в папке "Documents and Settings -> ИмяПользователя -> Local Settings -> Application Data -> ИмяПроизводителяПриложения -> ПолноеИмяПриложения -> Версия -> user.config". Например:
Код

<?xml version="1.0" encoding="utf-8" ?> 
<configuration>
    <userSettings>
        <FooWindowsApplication.Properties.Settings>
            <setting name="FooMainFormWidth" serializeAs="String">
                <value>200</value> 
            </setting>
            <setting name="FooMainFormHeight" serializeAs="String">
                <value>100</value> 
            </setting>
        </FooWindowsApplication.Properties.Settings>
    </userSettings>
</configuration>


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

    Изменение пользовательских параметров:
Код

Properties.Settings.Default.FooMainFormHeight = 100;
Properties.Settings.Default.FooMainFormWidth = 200;
// Сохранение параметров в файл происходит только после вызова это функции.Properties.Settings.Default.Save ( ); 


    Если проект содержит включает сборки, которые содержат собственные параметры пользователя, то будет создан один файл user.config, но он будет иметь более сложную структуру, в которой будут сохранены параметры пользователя для каждой из сборок проекта.
Код

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <sectionGroup name="userSettings">
            <section name="FooAssembly.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <userSettings>
        <FooWindowsApplication.Properties.Settings>
            <setting name="FooMainFormWidth" serializeAs="String">
                <value>200</value>
            </setting>
            <setting name="FooMainFormHeight" serializeAs="String">
                <value>100</value>
            </setting>
        </FooWindowsApplication.Properties.Settings>
        <FooAssembly.Properties.Settings>
            <setting name="FooLibraryConnectionTimeout" serializeAs="String">
                <value>100</value>
            </setting>
        </FooAssembly.Properties.Settings>
    </userSettings>
</configuration>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)