Instalar DLL en el GAC programáticamente

Tarde o temprano tendremos que desplegar una aplicación que necesitará una DLL instalada programáticamente en el GAC... "Para instalar una DLL en el GAC (Global Assembly Cache), tenemos la utilidad gacutil, sólo tenemos que navegar a inicio > programas > Microsoft visual studio 200x>Visual Studio tools>Visual studio command prompt..."

Para instalar una DLL en el GAC (Global Assembly Cache), tenemos la utilidad gacutil, sólo tenemos que navegar a inicio > programas > Microsoft visual studio 20xx>Visual Studio tools>Visual studio command prompt.

Escribimos gacutil /i <RUTAARCHIVO> y se instala.

¿Pero y si queremos hacerlo cuando instalamos una aplicación?

Si navegáis por internet veréis wrappers que utilizan DLLImport de una librería llamada Fusion (fusion.dll).

Hay otra opción podéis añadir la librería de gacutil que se llama “msvcr71.dll” al proyecto pero eso añadiría un mínimo de 220 KBs.

Hay una solución alternativa aún mejor y que se resuelve con una línea.

Añadimos a nuestras referencias “System.Enterprises”:

Y escribimos las siguientes líneas:

System.EnterpriseServices.Internal.Publish foo = new System.EnterpriseServices.Internal.Publish(); foo.GacInstall(”NOMBREARCHIVO.dll”);

También tiene método para quitarlo. El único inconveniente que tiene es que no captura excepciones en la instalación y eso podría ser un problema.

Escrito el 20 oct 2008
comments powered by Disqus

« Migrando un proyecto Android de Eclipse a AndroidStudio / Gradle: error “Unmappable character for encoding UTF-8” y de dependencias - Ordenando un StringCollection: ArrayList.Adapter »