Como Instalar un Ensamblado en el GAC

24/02/2005 - 07:47 por Julio Valencia Palau | Informe spam
Hola a todos, muchos de nosotros en la actualidad nos concentramos en el
desarrollo de aplicaciones, que con el tiempo han ido demostrando la
pontecialidad que posee la plataforma .Net.

En el presente algunos desarrolladores enfrentan la situacion de que se
encuentran desarrollando varias aplicaciones para una misma empresa y que a
su vez estas aplicaciones comparten los mismos componentes. Una manera de
como se compartes estos componentes, pues es sencilla, simplemente por cada
proyecto se tiene una copia local de los componentes por cada proyecto. Esto
genera un problema que con el tiempo se nota, que a la larga tendremos
cientos de copias de varios componentes regados por el servidor de una
empresa, con lo cual se produce lo siguiente:

-Perdida de espacio en disco duro, lo que en la actualidad es preciado.
-Actualizacion de componente un poco engorroza debido a que se puede perder
el hilo de que componente fue actualizado o no.
-Y demas situaciones que compromenten a la empresa desarrolladora y al
desarrollador.

En base a esto es que me gustaria compartir con todos ustedes el como
registrar un componente en el GAC (Global Assembly Cache) para que de hoy en
adelante todas las aplicaciones que generen, compartan sus componentes desde
un mismo sitio.

Primero que nada debemos poner un "nombre fuerte" a nuestro ensamblado o
"strongname" y como se logra esto?, pues de la siguiente manera; el framework
posee una herramienta generadoras de llaves llamada sn (strongname) la cual
generara un archivo de llaves para nuestro ensamblado lo cual permitira
diferenciarlo de cualquier otro ensamblado que posea el mismo nombre.
dentro de [Unidad]:\CarpetaWindows\"Microsoft .NET"\Framework\[Version]\ se
encuentra el sn y se debe utilizar asi:

sn -k [nombrearchivo.sk] donde nombrearchivo es el nombre de archivo de las
llaves.

Una vez generado el archivo de las llaves, abren el proyecto del componente
y en el AssemblyInfo agregan la siguiente linea:

<assembly: AssemblyKeyFile("nombrearchivo.snk")>

Esto hace que se vincule el proyecto con el par de llaves generadas y el
ensamblado tenga un strongname.

Compilamos en Release el proyecto y luego procedemos a instalarlo.

Para instalarlo en el GAC ejecutamos la siguiente sentencia:

gacutil /i Proyecto.dll
De esta manera nuestro componente queda listo para ser utilizado por todas
nuestras aplicaciones sin ubicar el mismo archivo en varios lugares.

Espero esto les sea de mucha ayuda.

Atentamente,

Julio Valencia Palau

MCP
 

Leer las respuestas

#1 Jorge Serrano [MVP VB]
24/02/2005 - 10:51 | Informe spam
Hola Julio,

acude a la ayuda de Visual Studio .NET o en su caso a la siguiente dirección
web:
http://msdn.microsoft.com/library/d...ycache.asp

Espero que esto te ayude.

Un saludo,

Jorge Serrano Pérez
MVP VB.NET


"Julio Valencia Palau" wrote:

Hola a todos, muchos de nosotros en la actualidad nos concentramos en el
desarrollo de aplicaciones, que con el tiempo han ido demostrando la
pontecialidad que posee la plataforma .Net.

En el presente algunos desarrolladores enfrentan la situacion de que se
encuentran desarrollando varias aplicaciones para una misma empresa y que a
su vez estas aplicaciones comparten los mismos componentes. Una manera de
como se compartes estos componentes, pues es sencilla, simplemente por cada
proyecto se tiene una copia local de los componentes por cada proyecto. Esto
genera un problema que con el tiempo se nota, que a la larga tendremos
cientos de copias de varios componentes regados por el servidor de una
empresa, con lo cual se produce lo siguiente:

-Perdida de espacio en disco duro, lo que en la actualidad es preciado.
-Actualizacion de componente un poco engorroza debido a que se puede perder
el hilo de que componente fue actualizado o no.
-Y demas situaciones que compromenten a la empresa desarrolladora y al
desarrollador.

En base a esto es que me gustaria compartir con todos ustedes el como
registrar un componente en el GAC (Global Assembly Cache) para que de hoy en
adelante todas las aplicaciones que generen, compartan sus componentes desde
un mismo sitio.

Primero que nada debemos poner un "nombre fuerte" a nuestro ensamblado o
"strongname" y como se logra esto?, pues de la siguiente manera; el framework
posee una herramienta generadoras de llaves llamada sn (strongname) la cual
generara un archivo de llaves para nuestro ensamblado lo cual permitira
diferenciarlo de cualquier otro ensamblado que posea el mismo nombre.
dentro de [Unidad]:\CarpetaWindows\"Microsoft .NET"\Framework\[Version]\ se
encuentra el sn y se debe utilizar asi:

sn -k [nombrearchivo.sk] donde nombrearchivo es el nombre de archivo de las
llaves.

Una vez generado el archivo de las llaves, abren el proyecto del componente
y en el AssemblyInfo agregan la siguiente linea:

<assembly: AssemblyKeyFile("nombrearchivo.snk")>

Esto hace que se vincule el proyecto con el par de llaves generadas y el
ensamblado tenga un strongname.

Compilamos en Release el proyecto y luego procedemos a instalarlo.

Para instalarlo en el GAC ejecutamos la siguiente sentencia:

gacutil /i Proyecto.dll
De esta manera nuestro componente queda listo para ser utilizado por todas
nuestras aplicaciones sin ubicar el mismo archivo en varios lugares.

Espero esto les sea de mucha ayuda.

Atentamente,

Julio Valencia Palau

MCP

Preguntas similares