Procedimiento para crear una directiva de publicador
Nota:
Este artículo es específico de .NET Framework. No se aplica a implementaciones más recientes de .NET, incluido .NET 6 y versiones posteriores.
Los proveedores de ensamblados pueden afirmar que las aplicaciones deberían usar una versión más reciente de un ensamblado incluyendo un archivo de directiva de edición con el nuevo ensamblado. El archivo de directiva de publicador especifica la redirección de ensamblados y la configuración de código base, y usa el mismo formato que un archivo de configuración de aplicación. El archivo de directiva de publicador se compila en un ensamblado y se coloca en la caché global de ensamblados.
Hay tres pasos implicados en la creación de una directiva de publicador:
Crear una directiva de publicador.
Crear una directiva de publicador.
Añadir la directiva de publicidad para agregar el ensamblado a la caché global de ensamblados.
El esquema de la directiva de publicador se describe en Redireccionamiento de versiones de ensamblado. En el ejemplo siguiente se muestra un archivo de directiva de publicador que redirige una versión de myAssembly
a otra.
<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 obtener información sobre cómo especificar una base de código, consulte Especificación de la ubicación de un ensamblado.
Crear el ensamblado de directiva de publicador
Use assembly Linker (Al.exe) para crear el ensamblado de directiva de publicador.
Para crear una directiva de publicador
Escriba el siguiente comando en el símbolo del sistema:
al /link:publisherPolicyFile /out:publisherPolicyAssemblyFile /keyfile:keyPairFile /platform:processorArchitecture
En este comando:
El
publisherPolicyFile
argumento es el nombre del archivo de directiva del publicador.El
publisherPolicyAssemblyFile
argumento es el nombre del ensamblado de directiva de publicador que se obtiene de este comando. El nombre del archivo de ensamblado debe seguir el formato:`policy.majorNumber.minorNumber.mainAssemblyName.dll'
El argumento
keyPairFile
es el nombre del archivo que contiene el par de claves. Debe firmar el ensamblado y el ensamblado de la directiva de publicador con el mismo par de claves.El
processorArchitecture
argumento identifica la plataforma de destino de un ensamblado específico del procesador.Nota
La capacidad de tener como destino una arquitectura de procesador específica está disponible a partir de .NET Framework 2.0.
La capacidad de tener como destino una arquitectura de procesador específica está disponible a partir de .NET Framework 2.0. El siguiente comando crea un ensamblado de directiva de publicador llamado policy.1.0.myAssembly
desde un archivo de directiva de publicador denominado pub.config
, asigna un nombre seguro al ensamblado mediante el par de claves del sgKey.snk
archivo y especifica que el ensamblado tiene como destino la arquitectura del procesador x86.
al /link:pub.config /out:policy.1.0.myAssembly.dll /keyfile:sgKey.snk /platform:x86
El ensamblado de directiva de publicador debe coincidir con la arquitectura del procesador del ensamblado al que se aplica. Por lo tanto, si el ensamblado tiene un valor de ProcessorArchitecture, el ensamblado de MSILdirectiva de publicador para ese ensamblado debe crearse con /platform:anycpu
. Debe proporcionar un ensamblado de directiva de publicador independiente para cada ensamblado específico del procesador.
Una consecuencia de esta regla es que para cambiar la arquitectura del procesador de un ensamblado, debe cambiar el componente principal o secundario del número de versión, de modo que pueda proporcionar un nuevo ensamblado de directiva de publicador con la arquitectura de procesador correcta. El ensamblado de directiva de publicador anterior no puede atender el ensamblado una vez que el ensamblado tiene una arquitectura de procesador diferente.
Otra consecuencia es que el enlazador de la versión 2.0 no se puede usar para crear un ensamblado de directiva de publicador para un ensamblado compilado con versiones anteriores de .NET Framework, ya que siempre especifica la arquitectura del procesador.
Añadir la directiva de publicidad para agregar el ensamblado a la caché global de ensamblados
Use la herramienta de la caché global de ensamblados (Gacutil.exe) para agregar el ensamblado a la caché global de ensamblados.
Añadir la directiva de publicidad para agregar el ensamblado a la caché global de ensamblados
Escriba el siguiente comando en el símbolo del sistema:
gacutil /i publisherPolicyAssemblyFile
El comando siguiente agrega policy.1.0.myAssembly.dll
el ensamblado en la caché global de ensamblados.
gacutil /i policy.1.0.myAssembly.dll
Importante
El ensamblado de directiva de publicador no se puede agregar a la caché global de ensamblados a menos que el archivo de directiva de publicador original especificado en el /link
argumento se encuentre en el mismo directorio que el ensamblado.