online microsoft linea gratis funciones definicion caracteristicas .net deployment gac

.net - microsoft - Cómo hacer que el archivo de política de Publisher redirija la solicitud de ensamblaje



publisher gratis (2)

Creé una biblioteca común en el trabajo, y está instalada en el GAC en nuestro servidor de prueba. Recientemente lo actualicé y quiero que todas nuestras aplicaciones utilicen la actualización. Creé un ensamblado de política editorial y lo instalé en el GAC junto con la actualización, pero cuando una aplicación web carga Leggett.Common, 1.0.0.0, no se redirige a Leggett.Common, 1.1.0.0.

Tengo el ensamblado común (en realidad hay cinco, pero vamos a mantenerlo simple) en una unidad de red, creé el archivo xml de la política del editor al lado y luego utilicé al.exe para crear el ensamblado de políticas del editor en la misma carpeta. Después de eso, puse la asamblea actualizada en el GAC y luego puse la asamblea de política editorial en el GAC.

El ensamblado común es ''Leggett.Common.dll'', el archivo de políticas del editor es ''1.1.Leggett.Common.policy'' y el ensamblado de política del editor es ''policy.1.1.Leggett.Common.dll''.

El XML para el archivo de política del editor tiene el siguiente aspecto:

<?xml version="1.0" encoding="utf-8"?> <configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Leggett.Common" publicKeyToken="32cd8f1a53a4c744" culture="neutral" /> <bindingRedirect oldVersion="1.0.0.0" newVersion="1.1.0.0"/> </dependentAssembly> </assemblyBinding> </runtime> </configuration>

¿Qué estoy haciendo mal?

Aclaración
Estoy probando esto en mi máquina de desarrollo local ya que los desarrolladores no tienen acceso al servidor de prueba.


Ok ... en una puñalada ...

1 - ¿Ha intentado utilizar el Visor de registro de encuadernación por ensamblaje (Fuslogvw.exe) para ver qué unión de ensamblaje está teniendo lugar?

Puedes encontrarlo en:

C: / Archivos de programa / Microsoft SDKs / Windows / v6.0A / Bin / FUSLOGVW.exe (con VS2008 instalado).

2 - "Tengo el ensamblado común (en realidad hay cinco, pero vamos a mantenerlo simple) en una unidad de red," - ¿Ambos ensambles residen en la unidad de red?

Actualización: Ok ... si el nuevo ensamblaje está en una unidad de red probablemente haya algunos problemas de confianza . ¿Puede implementar los nuevos ensamblajes en una unidad local en el servidor y luego volver a instalarlos en el GAC?

Actualización2: Sé ... cosas estúpidas ... ¿definitivamente tienes el número de clave pública y el número de versión correctos? es decir, ¿su atributo AssemblyVersion para el nuevo ensamblaje es definitivamente 1.1.0.0 y el token de clave pública es idéntico (en el GAC)?

¿Has intentado eliminar la cultura attribue?

Actualización3: Hola, Max ... ¿Puedes pegar el archivo de política de editor exacto que usaste ? Además ... recuerde que si está redireccionando de un ensamblado versionado de 1.0 a uno superior, el nombre de la política del editor debe nombrarse utilizando la versión principal del ensamblaje del que está redireccionando. Por lo tanto, en su caso, la política del editor debe llamarse ''policy.1.0.Leggett.Common.dll''. Noté que lo has llamado ''policy.1.1.Leggett.Common.dll'', que puede ser la razón por la que no está funcionando.

Y, por último, debe asegurarse de firmar la política del editor con la misma clave que utilizan los ensamblados 1.0 y 1.1.

Construí un par de DLL y las dejé caer en el GAC luego usé una aplicación de consola en VS para probar y funciona :)

Actualización4: Hola Max, algo en lo que nunca pensé. Cuando creó el archivo de política del editor, ¿especificó la plataforma? Intenta construirlo con:

al /link:1.1.Leggett.Common.policy /out:policy.1.0.Leggett.Common.dll / keyfile: /version:1.0.0.0

Deje fuera el conmutador / plataforma y especifique explícitamente el número de versión.

Aclamaciones
Kev


Está identificando el ensamblaje correctamente, pero para cualquier otra persona que esté leyendo, haga referencia al ensamblado por su raíz en el elemento assemblyIdentity sin la extensión de archivo (por ejemplo, "Fubar" y no "Fubar.dll").

La documentación de Microsoft omite mencionar que ... # $% #! (! @!