Практическое руководство. Создание политики издателя
Поставщики сборок могут сделать обязательным использование приложениями более новой версии какой-либо сборки путем включения файла политики издателя с обновленной сборкой. Файл политики издателя задает перенаправление сборок и параметры базы кода, он использует тот же формат, что и файл конфигурации приложения. Файл политики издателя компилируется в сборку и помещается в глобальный кэш сборок.
Создание политики издателя происходит в три этапа.
Создание файла политики издателя.
Создание сборки политики издателя.
Добавление сборки политики издателя в глобальный кэш сборок.
Схема для политики издателя описана в разделе Перенаправление версий сборок. В следующем примере показан файл политики издателя, перенаправляющий одну версию сборки myAssembly на другую.
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="myAssembly"
publicKeyToken="32ab4ba45e0a69a1"
culture="en-us" />
<!-- Redirecting to version 2.0.0.0 of the assembly. -->
<bindingRedirect oldVersion="1.0.0.0"
newVersion="2.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Способы задания базы кода см. в разделе Указание расположения сборки.
Создание сборки политики издателя
Для создания сборки политики издателя следует использовать Компоновщик сборок (Al.exe).
Чтобы создать сборку политики издателя
Введите следующую команду в командной строке:
al /link: publisherPolicyFile /out: publisherPolicyAssemblyFile /keyfile: keyPairFile /platform: processorArchitecture
В этой команде указаны следующие данные:
Аргумент publisherPolicyFile является именем файла политики издателя.
Аргумент publisherPolicyAssemblyFile — имя сборки политики издателя, которая является результатом выполнения этой команды. Имя файла сборки должно иметь формат:
policy.majorNumber.minorNumber.mainAssemblyName.dll
Аргумент keyPairFile — имя файла, содержащего пару ключей. Сборку и сборку политики издателя необходимо подписывать одной и той же парой ключей.
Аргумент processorArchitecture указывает целевую платформу для специфической для процессора сборки. Целевыми платформами могут быть amd64, ia64, msil или x86.
Примечание Возможности указывать целевую архитектуру процессора не существовало до .NET Framework версии 2.0.
Следующая команда создает сборку политики издателя policy.1.0.myAssembly из файла политики издателя pub.config, назначает строгое имя сборки с помощью пары ключей в файле sgKey.snk, а также указывает, что целевой архитектурой процессора является x86.
al /link:pub.config /out:policy.1.0.myAssembly.dll /keyfile:sgKey.snk /platform:x86
Сборка политики издателя должна соответствовать архитектуре процессора сборки, к которой она применяется. Поэтому если установлено значение ProcessorArchitecture для MSIL сборки, сборка политики издателя для этой сборки должна создаваться с помощью /platform:anycpu. Необходимо предоставить отдельную сборку политики издателя для каждой специфической для процессора сборки.
Из этого следует, что для изменения архитектуры процессора для сборки необходимо изменить номер компонентов основной и добавочной версии, чтобы для новой сборки политики издателя была доступна правильная архитектура процессора. Старая сборка политики издателя не может применяться к сборке, если она имеет отличную архитектуру процессора.
Еще одним следствием является то, что нельзя использовать компоновщик версии 2.0 для создания сборки политики издателя для сборки, созданной с помощью более ранней версии .NET Framework, поскольку он всегда указывает архитектуру процессора.
Добавление сборки политики издателя в глобальный кэш сборок
Чтобы добавить сборку в глобальный кэш сборок, используйте средство глобального кэша сборок (Gacutil.exe).
Чтобы добавить сборку политики издателя в глобальный кэш сборок
Введите следующую команду в командной строке:
gacutil /i publisherPolicyAssemblyFile
Следующая команда добавляет policy.1.0.myAssembly.dll в глобальный кэш сборок.
gacutil /i policy.1.0.myAssembly.dll
Важно Сборка политики издателя может быть добавлена в глобальный кэш сборок, только если исходный файл политики издателя расположен в том же каталоге, что и сборка.
См. также
Ссылки
Схема параметров среды выполнения
Основные понятия
Обнаружение сборок в среде выполнения