Файлы конфигурации приложений

Файл конфигурации приложения — это XML-файл, используемый для управления привязкой сборки. Он может перенаправлять приложение с одной версии параллельной сборки в другую версию той же сборки. Это называется конфигурацией для каждого приложения. Файл конфигурации приложения применяется только к определенному манифесту приложения и зависимым сборкам. Для изолированных компонентов, скомпилированных с помощью встроенного манифеста ISOLATIONAWARE_MANIFEST_RESOURCE_ID, требуется отдельный файл конфигурации приложения. Манифестам, управляемым с помощью CreateActCtx, требуется отдельный файл конфигурации приложения.

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

Полный список XML-схемы см. в разделе Схема файла конфигурации приложения.

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

Элемент Атрибуты Обязательно
Конфигурация Да
windows Да
publisherPolicy Да
Применить Да
Среда выполнения Нет
assemblyBinding Да
Зондирования Нет
privatePath Да
Зависимостей Нет
dependentAssembly Да
assemblyIdentity Да
type Да
name Да
language Нет
processorArchitecture Да
version Да
Publickeytoken Нет
bindingRedirect Да
oldVersion Да
newVersion Да

Расположение файла

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

Синтаксис имени файла

Имя файла конфигурации приложения — это имя исполняемого файла приложения, за которым следует .config.

Например, файл конфигурации приложения, ссылающийся на Example.exe или Example.dll, будет использовать синтаксис имени файла, показанный в следующем примере. Вы можете опустить поле идентификатора <ресурса> , если устанавливается файл конфигурации как отдельный файл или если идентификатор ресурса равен 1.

example.exe.<идентификатор> ресурса.config

example.dll.<идентификатор> ресурса.config

Элементы

Имена элементов и атрибутов чувствительны к регистру. Значения элементов и атрибутов не учитывают регистр, за исключением значения атрибута типа.

настройка

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

Windows

Включает части файла конфигурации приложения, которые применяются к перенаправлению сборок Win32.

Примечание

Автор приложения не должен включать файл конфигурации с подэлементом Windows в составе приложения. Это может быть разрешено, если единственной целью файла конфигурации является включение функций privatePath элемента пробы . Элемент probing недоступен в системах более ранних версий, чем Windows Server 2008 R2 и Windows 7.

publisherPolicy

Указывает, следует ли применять политику издателя.

Этот элемент содержит атрибуты, показанные в следующей таблице.

attribute Описание
Применить Значение "да" применяет политику издателя. Это параметр по умолчанию. Значение "нет" не применяет политику издателя.

среда выполнения

Включает части файла конфигурации приложения, которые применяются к перенаправлению сборок .NET.

assemblyBinding

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

Начиная с Windows Server 2008 R2 и Windows 7 элемент assemblyBinding может включать в себя подэлемент проверки .

Зондирования

Необязательный вложенный элемент элемента assemblyBinding , который расширяет поиск сборок на дополнительные каталоги. Дополнительные каталоги не обязательно должны быть подкаталогами каталога сборки.

Примечание

Этот элемент недоступен в системах, предшествующих Windows Server 2008 R2 и Windows 7, и может использоваться только в элементе Windows .

Этот элемент содержит атрибуты, показанные в следующей таблице.

attribute Описание
privatePath Указывает относительные пути к подкаталогам базового каталога приложения, который может содержать сборки. Можно указать не более девяти путей к подкаталогу. Разделите путь к каждому подкаталогу точкой с запятой.

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

<probing privatePath="bin;..\bin2\subbin;bin3"/>

dependency

Элемент контейнера по крайней мере для одного dependentAssembly. Каждый dependAssembly может находиться в пределах ровно одной зависимости. Этот элемент не содержит атрибуты. Необязательный элемент.

dependentAssembly

Первый вложенный элемент должен быть элементом assemblyIdentity , который определяет параллельную сборку, перенаправленную файлом конфигурации приложения. У объекта dependentAssembly нет атрибутов.

assemblyIdentity

В качестве первого подэлемента элемента assemblyBindingassemblyIdentity описывает и однозначно идентифицирует приложение. Файл конфигурации приложения перенаправляет привязку этого приложения в параллельные сборки. Например, следующая assemblyIdentity указывает, что файл конфигурации приложения влияет на привязку приложения mysampleApp к параллельным сборкам. Перенаправляемые сборки будут определены в dependentAssembly.

<assemblyIdentity processorArchitecture="X86" name="Microsoft.Windows.mysampleApp" type="win32" version="1.0.0.0"/>

В качестве первого подэлемента элемента dependentAssemblyassemblyIdentity описывает параллельную сборку, от которой зависит приложение. Файл конфигурации приложения перенастраивает удостоверение этой необходимой сборки. Например, следующие assemblyIdentity и bindingRedirect перенастраивает зависимость от Microsoft.Windows.SampleAssembly с версии 2.0.0.0 на версию 2.1.0.0.

<dependency>
      <dependentAssembly>
         <assemblyIdentity type="win32"
          name="Microsoft.Windows.SampleAssembly"
          processorArchitecture="x86"
          publicKeyToken="0000000000000000"/>
         <bindingRedirect oldVersion="2.0.0.0" newVersion="2.1.0.0"/>
      </dependentAssembly>
</dependency>

Обратите внимание, что каждая assemblyIdentity , включенная в dependentAssembly , должна точно соответствовать assemblyIdentity в манифесте сборки.

Элемент assemblyIdentity имеет следующие атрибуты. У него нет подэлементов.

attribute Описание
type Значение должно быть win32 (в нижнем регистре). Обязательный.
name Атрибут name определяет приложение, на которое влияет файл конфигурации приложения или перенаправляемая сборка. Используйте следующий формат для имени: Organization.Division.Name. Обязательный. Например: Microsoft.Windows.MysampleApp или Microsoft.Windows.MysampleAsm.
language Определяет язык. Необязательный элемент. Для assemblyIdentity , ссылающегося на сборку, если сборка зависит от языка, укажите код языка DHTML. Если сборка используется по всему миру (нейтралитет языка), задайте значение "*".
processorArchitecture Указывает процессор, на котором выполняется приложение.
version Указывает версию приложения или сборки. Используйте синтаксис версии из четырех частей: mmmm.nnnn.чикo.pppp. Обязательный.
Publickeytoken Для assemblyIdentity , ссылающегося на сборку, это шестнадцатеричная строка из 16 символов, представляющая последние 8 байт хэша SHA-1 открытого ключа, под которым подписывается сборка. Открытый ключ, используемый для подписи каталога, должен иметь значение 2048 бит или больше. Требуется для всех общих параллельных сборок.

bindingRedirect

Элемент bindingRedirect содержит сведения о перенаправлении для привязки сборки. Каждый bindingRedirect должен быть включен только в один dependentAssembly. Синтаксис новой и старой версий из четырех частей должен указывать одну и ту же основную и дополнительную версии.

Этот элемент содержит атрибуты, показанные в следующей таблице.

attribute Описание
oldVersion Указывает версию сборки, для которой выполняется переопределение и перенаправление. Используйте синтаксис версии из четырех частей nnnnn.nnnnn.nnnnn.nnnnn. Укажите диапазон версий с помощью дефиса без пробелов. Например, 2.14.3.0 или 2.14.3.0 2.16.0.0. Обязательный.
newVersion Указывает версию заменяемой сборки. Используйте синтаксис версии из четырех частей nnnnn.nnnnn.nnnnn.nnnnn.

Комментарии

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

Пример

<bindingRedirect oldVersion="1.0.0.0" newVersion="1.0.10.0"/>
<bindingRedirect oldVersion="1.0.50.2011-1.0.60.65535" newVersion="1.0.70.0"/>