Linking assemblies
Linker, es una libreria que escribió Jb, y se encarga de reducir al mínimo el conjunto de funciones assemblies para que un conjunto de programas puedan correr. En otras palabras, toma las librerias que necesita un programa y elimina de ellas los métodos ó tipos que no son necesarios.
Pueden obtener el código del SVN, y compilarlo. Requiere Mono.Cecil.
Linker es una simple aplicación de consola, y toda la magia ocurre en una sola linea de comandos. Antes que nada, veamos que tenemos. Los archivos necesarios para que la aplicación Mono.Sms.exe funcionen son: Castle.Core.dll, Castle.Windsor.dll, Castle.MicroKernel.dll y Castle.DynamicProxy.dll. Ponemos todos archivos en el mismo directorio que el ejecutable Mono.Sms.exe. Luego ejecutamos:
monolinker -a Mono.Sms.exe -out linkedfiles/ -x descritor.xml
Donde indicamos cual va a ser la aplicación objetivo, el directorio de salida, y el archivo xml descritor con los tipos que se desean preservar despues del proceso de linkeo. Nuestro archivo con los tipos que no queremos que Linker los eliminie es el siguiente:
<?xml version="1.0" encoding="utf-8" ?> <linker> <assembly fullname="Castle.Windsor"> <namespace fullname="Castle.Windsor.Configuration.Interpreters.XmlProcessor.ElementProcessors"/> <type fullname="Castle.Windsor.Configuration.AppDomain.CastleSectionHandler"/> </assembly> </linker>
Con esto indicamos que el namespace ElementProcessors, y el tipo CastleSectionHandler deben ser incluidos en la salida. Este descritor lo tuve que elaborar porque Linker omitia el tipo CastleSectionHandler, y tambíén eliminaba los constructores de los tipos contenidos en el namespace ElementProcessors. Como lo supe? Prueba y error.
Ahora veamos el resultado:
Ahora que hemos reducido, el tamaño de los assemblies, imaginense otra herramienta para juntar todos los assemblies en 1 sólo. La filosofía XCOPY de .Net, se convertiria en la COPY, nada más. Por estos caminos anda también Jb, que según dijo, está reescribiendo a monomerge (actualmente se cae).
No Responses to “Linking assemblies”
RSS feed for comments on this post. TrackBack URL