Файлы конфигурации издателя

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

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

Элемент Атрибуты Обязательно
Сборки Да
manifestVersion Да
assemblyIdentity Да
type Да
name Да
language Нет
processorArchitecture Нет
version Да
Publickeytoken Нет
Зависимостей Нет
dependentAssembly Нет
bindingRedirect Да
oldVersion Да
newVersion Да

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

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

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

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

Например, файл конфигурации издателя для версии 6.0 сборки Microsoft.Windows.Common-Controls будет иметь следующее имя:

policy.6.0.Microsoft.Windows.Common-Controls

Не используйте файлы конфигурации политики для увеличения основной или дополнительной версии сборки. Например, не перенаправляйте версию 6.0.0.0 на 7.0.0.0 или 6.1.0.0. Когда приложение ссылается на версию сборки, например 6.0.0.0, параллельно проверяет наличие файлов конфигурации политики с указанными основными и дополнительными версиями, например 6.0. Затем приложение перенаправляется на другую версию сборки, например 6.0.1.0. Если файл конфигурации издателя увеличивает основную или дополнительную версию сборки, последующее перенаправление сборки может потребовать выдачи нескольких файлов конфигурации политики.

Элементы

Сборки

Элемент контейнера. Его первым вложенным элементом должен быть assemblyIdentity. Обязательный.

Элемент сборки должен находиться в пространстве имен urn:schemas-microsoft-com:asm.v1. Дочерние элементы сборки также должны находиться в этом пространстве имен путем наследования или добавления тегов.

Элемент сборки имеет следующие атрибуты.

attribute Описание
manifestVersion Атрибут manifestVersion должен иметь значение 1.0.

assemblyIdentity

Описывает и уникально идентифицирует параллельную сборку.

В качестве первого подэлемента элемента сборки, assemblyIdentity описывает параллельную сборку, в которую были изменены одна или несколько зависимостей сборки. Файл конфигурации издателя перенаправляет зависимости идентифицированной сборки. Например, следующая assemblyIdentity указывает, что файл конфигурации издателя влияет на зависимости сборки x86 Microsoft.Windows.Pop 6.0.0.0.

<assemblyIdentity 
     type="win32-policy" 
     publicKeyToken="0000000000000000" 
     name="policy.6.0.Microsoft.Windows.Pop" 
     version="2.1.0.0" 
     processorArchitecture="x86"/>

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

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

Элемент assemblyIdentity имеет следующие атрибуты. Он не содержит подэледений.

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

Зависимостей

Необязательный элемент контейнера по крайней мере для одного объекта dependentAssembly. Он не имеет атрибутов.

dependentAssembly

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

bindingRedirect

Элемент bindingRedirect содержит сведения о перенаправлении для привязки сборки.

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

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

Комментарии

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

Пример

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32-policy" publicKeyToken="0000000000000000" name="policy.6.0.Proseware.Research.SampleAssembly" version="1.0.1.0" language="en-us" processorArchitecture="x86"/>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" publicKeyToken="0000000000000000" name="Proseware.Research.SampleAssembly" language="en-us" processorArchitecture="x86"/>
<bindingRedirect oldVersion="1.0.0.0" newVersion="1.0.1.0"/>
</dependentAssembly>
</dependency>
</assembly>