Como: Criar uma política de editor

Observação

Este artigo é específico para aplicativos .NET Framework. Não se aplica a implementações mais recentes do .NET, incluindo o .NET 6 e versões posteriores.

Os editores de assemblies podem declarar que os aplicativos devem usar uma versão mais recente de um assembly, incluindo um arquivo de política do editor com o assembly atualizado. O arquivo de política do editor especifica as configurações de base de código e redirecionamento de assembly e usa o mesmo formato que um arquivo de configuração de aplicativo. O arquivo de política do editor é compilado em um assembly e colocado no cache de assembly global.

Há três etapas envolvidas na criação de uma política de editor:

  1. Criar um arquivo de política de editor

  2. Criar um assembly de política de editor

  3. Adicionar o assembly de política de editor ao cache de assembly global.

O esquema para a política de editor é descrito em Redirecionamento de versões de assembly. O exemplo a seguir mostra um arquivo de política de editor que redireciona uma versão de myAssembly para outra.

<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>

Para saber como especificar uma base de código, consulte Especificando a localização de um assembly.

Criando o Assembly de política de editor

Use o Vinculador de Assembly (Al.exe) para criar o assembly de política de editor.

Para criar um assembly de política de editor

Digite o seguinte comando no prompt de comando:

al /link:publisherPolicyFile /out:publisherPolicyAssemblyFile /keyfile:keyPairFile /platform:processorArchitecture

Neste comando:

  • O argumento publisherPolicyFile é o nome do arquivo de política de editor.

  • O argumento publisherPolicyAssemblyFile é o nome do assembly de política de editor que resulta desse comando. O nome do arquivo de assembly deve seguir o formato:

    `policy.majorNumber.minorNumber.mainAssemblyName.dll'

  • O argumento keyPairFile é o nome do arquivo que contém o par de chaves. Você deve assinar o assembly e o assembly de política de editor com o mesmo par de chaves.

  • O argumento processorArchitecture identifica a plataforma direcionada por um assembly específico do processador.

    Observação

    A capacidade de direcionar uma arquitetura de processador específica está disponível a partir do .NET Framework 2.0.

A capacidade de direcionar uma arquitetura de processador específica está disponível a partir do .NET Framework 2.0. O comando a seguir cria um assembly de política do editor chamado policy.1.0.myAssembly de um arquivo de política do editor chamado pub.config, atribui um nome forte ao assembly usando o par de chaves no arquivo sgKey.snk e especifica que o assembly tem como destino a arquitetura do processador x86.

al /link:pub.config /out:policy.1.0.myAssembly.dll /keyfile:sgKey.snk /platform:x86

O assembly de política de editor deve corresponder à arquitetura do processador do assembly ao qual ele se aplica. Portanto, se o assembly tiver um valor de ProcessorArchitecture de MSIL, o assembly de política de editor para esse assembly deverá ser criado com /platform:anycpu. Você deve fornecer um assembly de política de editor separado para cada assembly específico do processador.

Uma consequência dessa regra é que, para alterar a arquitetura do processador de um assembly, você deve alterar o componente principal ou menor do número de versão, para que você possa fornecer um novo assembly de política de editor com a arquitetura correta do processador. O assembly de política de editor antigo não pode atender ao assembly depois que o assembly tiver uma arquitetura de processador diferente.

Outra consequência é que o vinculador da versão 2.0 não pode ser usado para criar um assembly de política de editor para um assembly compilado usando versões anteriores do .NET Framework, pois ele sempre especifica a arquitetura do processador.

Adicionar o assembly de política de editor ao cache de assembly global.

Use a Ferramenta de Cache de Assembly Global (Gacutil.exe) para adicionar o assembly de política de editor ao cache de assembly global.

Para adicionar o assembly de política de editor ao cache de assembly global

Digite o seguinte comando no prompt de comando:

gacutil /i publisherPolicyAssemblyFile

O comando a seguir adiciona policy.1.0.myAssembly.dll ao cache de assembly global.

gacutil /i policy.1.0.myAssembly.dll

Importante

O assembly de política de editor não pode ser adicionado ao cache de assembly global, a menos que o arquivo de política original do editor especificado no argumento /link esteja localizado no mesmo diretório que o assembly.

Confira também