Поделиться через


Конфигурация издателя

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

файлы конфигурации издателя могут предоставляться издателем сборки при выпуске новой версии сборки с совместимыми исправлениями ошибок или обновлениями системы безопасности. Обновленная версия должна быть полностью совместима с обратной. Файл конфигурации издателя никогда не следует использовать для добавления новых функций, если обновление не полностью совместимо. Файлы конфигурации издателя никогда не следует использовать для увеличения основной или дополнительной версии сборки. Например, не перенаправляйте сборку версии 6.0.0.0 на 7.0.0.0 или на 6.1.0.0.

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

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

  • Пакет установщика Windows (.msi файл), включающий новую версию сборки с конфигурацией издателя. Это может быть установлено как пакет обновления или QFE, так как в этом случае клиент решил глобально обновить систему. Эта версия пакета никогда не должна устанавливаться приложениями.
  • Модуль слияния установщика Windows (MSM-файл), который включает только новую версию сборки. Эта версия может быть включена в приложения.

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

Например, установка следующего файла конфигурации издателя перенаправляет привязку из версии 2.0.0.0 microsoft.Windows.SampleAssembly в версию 2.0.1.0. При этом добавляется новая политика с именем 1.1.0.0.Policy в разделе %systemDrive%\windows\winsxs\policies\x86_policy.2.0.Microsoft.Windows.SampleAssembly_75e377300ab7b886_x-ww_<хэшvalue>.

<?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.2.0.Microsoft.Windows.SampleAssembly" version="1.1.0.0" processorArchitecture="x86"/>
   <dependency>
      <dependentAssembly>
         <assemblyIdentity type="win32" name="Microsoft.Windows.SampleAssembly"  processorArchitecture="x86" publicKeyToken="75e377300ab7b886"/>
         <bindingRedirect oldVersion="2.0.0.0" newVersion="2.0.1.0"/>
      </dependentAssembly>
   </dependency>
</assembly>

Установка следующего файла конфигурации издателя для той же сборки перенаправляет привязку с версии 2.0.0.0 microsoft.Windows.SampleAssembly до версии 2.0.3.0. При этом добавляется другая политика с именем 2.1.0.0.Policy в разделе %systemDrive%\windows\winsxs\policies\x86_policy.2.0.Microsoft.Windows.SampleAssembly_75e377300ab7b886_x-ww_<hashvalue>.

<?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.2.0.Microsoft.Windows.SampleAssembly" version="2.1.0.0" processorArchitecture="x86"/>
   <dependency>
      <dependentAssembly>
         <assemblyIdentity type="win32" name="Microsoft.Windows.SampleAssembly"  processorArchitecture="x86" publicKeyToken="75e377300ab7b886"/>
         <bindingRedirect oldVersion="2.0.0.0" newVersion="2.0.3.0"/>
      </dependentAssembly>
   </dependency>
</assembly>