Файлы конфигурации приложений
Файл конфигурации приложения — это 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"/>