Directivas de enlace en ensamblados de .NET
Publicado por sir_elvis (2 intervenciones) el 04/12/2008 18:05:05
No sé si alguna vez os ha pasado eso de estar desarrollando varios ensamblados cada uno con distintas versiones y dependencias de los otros. Pues bien, si cada uno de esos ensamblados lo está desarrollando un grupo distinto, es normal que cada ensamblado tenga un número de versión diferente. Ahora resulta que esos ensamblados deben estar instalados en la GAC, pues hay varias aplicaciones ASP.NET dependientes de ellos, cada una de las cuales desarrollada también por distintos grupos de trabajo.
Cada grupo desarrolla su ensamblado y a medida que avanza, cambia el número de versión, y como los ensamblados se desarrollan a distinto ritmo unos de otros, y también a distinto ritmo que las aplicaciones ASP.NET dependientes de ellos, de no ser por las directivas de enlace (directivas de editor, archivos de configuración de aplicación o directivas de equipo, para los amigos), cada cambio de versión de un ensamblado haría necesaria la recompilación de los ensamblados dependientes, de los dependientes de los dependientes, de las aplicaciones ASP.NET dependientes, etc.
Así pues, para varios equipos de desarrollo, las directivas de enlace parecen la panacea, sobre todo si ponen rangos de versión del tipo:
1.0.0.0-2.5.7.99999 --> 2.5.7.23564
Y todo va bien, hasta que se ha de migrar del framework 1.1 al 2.0 y, misteriosamente, siguiendo el mismo proceso, todo falla. Parece como si la GAC del framework 2.0 no supiera qué demonios es una directiva de enlace.
Entonces uno busca y rebusca durante muchos días una solución por la MSDN, hasta que se encuentra un ejemplo perdido de la mano de Dios en el que ponen una directiva de enlace del tipo:
1.0.0.0-65535.65535.65535.65535 --> 1.5.0.23564
Y en su caso concreto le da por probar a poner como directiva:
1.0.0.0-2.5.7.65535 --> 2.5.7.23564
Y TODO FUNCIONA OTRA VEZ.
Esto en la MSDN no aparece explícitamente por ninguna parte, y en ningún otro foro de Internet en este momento. Tan sólo en la MSDN hay una pista en la que aparece una nota importante que arroja algo de luz para el framework 1.1:
http://msdn.microsoft.com/es-es/library/system.reflection.assemblyversionattribute.aspx
y que han quitado para la versión 2.0:
http://msdn.microsoft.com/es-es/library/system.reflection.assemblyversionattribute(VS.80).aspx
¿Curioso, verdad?
Un saludo, y espero que si hay algún otro grupo de desarrollo al que le pase lo mismo, este post pueda arrojarles algo de luz.
Cada grupo desarrolla su ensamblado y a medida que avanza, cambia el número de versión, y como los ensamblados se desarrollan a distinto ritmo unos de otros, y también a distinto ritmo que las aplicaciones ASP.NET dependientes de ellos, de no ser por las directivas de enlace (directivas de editor, archivos de configuración de aplicación o directivas de equipo, para los amigos), cada cambio de versión de un ensamblado haría necesaria la recompilación de los ensamblados dependientes, de los dependientes de los dependientes, de las aplicaciones ASP.NET dependientes, etc.
Así pues, para varios equipos de desarrollo, las directivas de enlace parecen la panacea, sobre todo si ponen rangos de versión del tipo:
1.0.0.0-2.5.7.99999 --> 2.5.7.23564
Y todo va bien, hasta que se ha de migrar del framework 1.1 al 2.0 y, misteriosamente, siguiendo el mismo proceso, todo falla. Parece como si la GAC del framework 2.0 no supiera qué demonios es una directiva de enlace.
Entonces uno busca y rebusca durante muchos días una solución por la MSDN, hasta que se encuentra un ejemplo perdido de la mano de Dios en el que ponen una directiva de enlace del tipo:
1.0.0.0-65535.65535.65535.65535 --> 1.5.0.23564
Y en su caso concreto le da por probar a poner como directiva:
1.0.0.0-2.5.7.65535 --> 2.5.7.23564
Y TODO FUNCIONA OTRA VEZ.
Esto en la MSDN no aparece explícitamente por ninguna parte, y en ningún otro foro de Internet en este momento. Tan sólo en la MSDN hay una pista en la que aparece una nota importante que arroja algo de luz para el framework 1.1:
http://msdn.microsoft.com/es-es/library/system.reflection.assemblyversionattribute.aspx
y que han quitado para la versión 2.0:
http://msdn.microsoft.com/es-es/library/system.reflection.assemblyversionattribute(VS.80).aspx
¿Curioso, verdad?
Un saludo, y espero que si hay algún otro grupo de desarrollo al que le pase lo mismo, este post pueda arrojarles algo de luz.
Valora esta pregunta


0