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


Практическое руководство. Создание политики издателя

Обновлен: Ноябрь 2007

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

Создание политики издателя происходит в три этапа.

  1. Создание файла политики издателя.

  2. Создание сборки политики издателя.

  3. Добавление сборки политики издателя в глобальный кэш сборок.

Схема для политики издателя описана в разделе Перенаправление версий сборок. В следующем примере показан файл политики издателя, перенаправляющий одну версию сборки 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.

      dz32563a.alert_note(ru-ru,VS.90).gifПримечание.

      Возможности указывать целевую архитектуру процессора не существовало до .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:msil. Необходимо предоставить отдельную сборку политики издателя для каждой специфической для процессора сборки.

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

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

Добавление сборки политики издателя в глобальный кэш сборок

Чтобы добавить сборку в глобальный кэш сборок, используйте средство глобального кэша сборок (Gacutil.exe).

Чтобы добавить сборку политики издателя в глобальный кэш сборок

  • Введите следующую команду в командной строке:

    gacutil /i publisherPolicyAssemblyFile

    Следующая команда добавляет policy.1.0.myAssembly.dll в глобальный кэш сборок.

    gacutil /i policy.1.0.myAssembly.dll
    
    dz32563a.alert_caution(ru-ru,VS.90).gifВажное примечание.

    Сборка политики издателя может быть добавлена в глобальный кэш сборок, только если исходный файл политики издателя расположен в том же каталоге, что и сборка.

См. также

Основные понятия

Обнаружение сборок в среде выполнения

Перенаправление версий сборки

Ссылки

Схема параметров среды выполнения

Другие ресурсы

Программирование с использованием сборок

Файлы конфигурации

Настройка приложений

Схема файлов конфигурации для .NET Framework