2009-12-16 21 views
5

tengo que implementar algunos ensambles en GAC. Solo tuve algunas preguntas sobre (mi) comprensión del GAC. realmente me confundeGAC y versiones de montaje

Quiero saber qué versiones cambiar el ensamblaje y la versión del archivo. ¿Cuáles son las combinaciones posibles en las que se sustituirá GAC dll instalando la aplicación? y gestión básica para archivos GAC.

voy a explicar mi pregunta usando siguiente ejemplo para una mejor comprensión de GAC:

Supongamos que tengo los productos A y B.

Tanto A como B se refieren a myfile.dll instalado en GAC.
versión (i) de montaje: [1.0.0.0]
(ii) versión archivo de ensamblaje: [2.0.0.0] (intencionalmente diferente para evitar más confusión)

  1. Supongamos que tengo una corrección de errores que aplica en myfile.dll. Entonces, ¿qué versión debo cambiar?

  2. Supongamos que tengo una nueva versión de A que diga 'ANEW'. Entonces qué versión debe cambiarse para que ambos A, B ANEW puedan residir uno al lado del otro.

  3. supongo que si tengo 'A' se instala con myfile.dll presente en GAC y ahora intento instalar 'B' que tiene DLL GAC con correcciones de errores ..then qué versiones que cambiar para que el cambio se refleja en ' UN'.

  4. igual que Q3 pero el cambio de B no debería reflejarse en 'A'.

  5. Supongamos que 'A' está instalado con myfile (1.0.0.0). Ahora suponga que 'B' se está instalando con myfile (1.x.y.z) .. ¿se reemplazará el archivo GAC?

  6. Supongamos que 'A' está instalado con myfile (1.0.0.0). Ahora suponga que 'B' se está instalando con myfile (2.x.y.z) .. ¿se reemplazará el archivo GAC?

  7. Supongamos que 'A' está instalado con myfile (1.0.0.0). Ahora supongamos que 'B' está instalando con miarchivo (1.0.0.0) suponiendo que la versión no se cambia ... ¿se reemplazará el archivo GAC?

  8. Además, ¿cómo se eliminan los dlls de GAC? ¿Existe algún criterio para la eliminación?

Supongo que las preguntas son algo confusas pero espero que sepan qué estoy pidiendo.

PS: En relación con este tema net-assembly-dll-sharing-and-deploying

Respuesta

4

1) Depende de qué tipo de cambios que haga reparar el fallo. Si cambias alguna interfaz pública o haces cambios significativos en el comportamiento, cambiaría el número de versión del ensamblaje. Si no, puede hacer lo que Microsoft hace una única versión del archivo.

2) La versión de montaje es todo lo que le importa al GAC. Por lo tanto, si desea que dos ensamblajes de nombre idéntico vivan uno al lado del otro, tienen que diferir según la versión de ensamblaje.

3) Probablemente cambiaría el número de versión del ensamblado e incluiría la política del editor para redirigir a los clientes de la versión anterior a la nueva.

4) Igual que 3, pero no incluye la política del editor, o configure A para omitirla.

5) & 6) No, está instalado al lado del otro.

7) No lo creo, pero puede depender de si difieren en la versión del archivo. Estoy seguro de que puedes intentar verificarlo.

8) Hay referencias que se pueden utilizar para evitar la eliminación accidental. MSI utiliza eso, por lo que si usa MSI para la instalación, realiza un seguimiento de las referencias al ensamblaje y no lo elimina hasta que se desinstalen todas las aplicaciones. Si lo haces manualmente (digamos usando Gacutil/uf) puedes arruinar las cosas.

+1

thx por respuesta. También encontré este enlace http://blogs.msdn.com/junfeng/archive/2004/02/14/72666.aspx "Cuando vemos que el ensamblado ya existe en GAC, tratamos de comparar la versión del archivo del ensamblado en GAC (llamémoslo "ensamblaje antiguo") y la versión de archivo del ensamblaje a punto de instalar (y "nuevo" ensamblaje). Si la versión del archivo del ensamblado "nuevo" es más baja que la del ensamblado "antiguo", nos negaremos a instalar el ensamblado "nuevo", a menos que solicite fusion for force install ("gacutil -if") ". – Amitd

+1

Después de esta respuesta y algo de investigación ... tengo las respuestas ,, thu u :) [a] para la instalación lado a lado en GAC siempre cambie la versión del ensamblaje. [b] para la corrección de errores, siempre cambie la versión del archivo de ensamblaje. [c] la versión de archivo anterior siempre se reemplaza por una versión de ensamblaje más nueva. [d] para forzar el reemplazo de una nueva versión de archivo con una versión de archivo anterior (dada la misma versión de ensamblaje) utilice la marca de fuerza en gacutil. – Amitd