Конфигурация Publisher

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

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

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

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

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

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

Например, при установке следующего файла конфигурации издателя привязка перенаправляется с версии 2.0.0.0 корпорации Майкрософт. 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_<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="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 корпорации Майкрософт. 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>