Firmar Ensamblados y meterlos en el GAC
Si quieres meter las dll en el GAC para que sean compartidos por todas las aplicaciones de la maquina tienes que tener en cuenta un par de cosas:
- Las dll que pongas en el GAC tienen que estar firmadas, el proceso es sencillo, vas a las propiedades del proyecto y la firmas, todo visual.
- Todas las referencias que use tu dll tienen que estar firmadas también, todas las del Framework lo están ya, asà que solo te tienes que preocupar de las tuyas y de las de 3ros que estés usando.
- Tienes que poner una versión fija a la dll (que no se autoincremente en cada compilación, eso lo haces en AssemblyInfo quitando el * en la versión) ya que las aplicaciones quedaran referenciadas a esa versión y asà no necesitaras actualizar las aplicaciones cuando actualices la dll en el GAC.
No es un tema complicado, el único “problema†que encontramos fue cuando generamos una dll de serializarión con los tipos con el sgen, ya que esa dll tiene que estar firmada también, para eso tienes que firmar primero la dll sin las referencias a la dll de serializacion, después generar la dll de serializacion firmada y volver a poner las referencias, eso solo es necesaria hacerlo la primera vez, después cuando modifiquemos algún tipo y queramos actualizar la dll de serialización como están las dos firmadas no importa quitar referencias.
Para generar la dll de serializacion firmada el comando es este:
sgen.exe /assembly:”$(TargetDir)$(TargetFileName)” /compiler:”\”/keyfile:$(ProjectDir)Signature.snk”\” /force
Para meterlas en el GAC basta que las arrastres a la carpeta Windows/Assembly.





