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).
-
Categories
- .NET
- ActiveRecord
- agil
- Alt.Net
- AOP
- Asp.net MVC
- blog
- C#
- codegeneration
- cosas interesantes
- db4o
- db4o-analyzer
- DLR
- enterprise-library
- expresiones regulares
- General
- Hibernate
- IoC
- it
- Java
- LINQ
- Linux
- Lucene
- Mocking
- Mono
- monosms
- MVC
- NAnt
- NHibernate
- NHibernate.Burrow
- NHibernate.Contrib
- NHibernate.Validator
- noticias
- O/R Mapping
- Open Source
- patrones
- personal
- podcast
- programación
- Redes Neuronales
- Refactoring
- regex
- Scrum
- Security
- Shards
- Sin Categoría
- Spring
- SqlServer
- Testing
- tips
- Tool
- tutorial
- Ubuntu
- uNHAddIns
- video
- Virtualización
- Visual Basic.Net
- Visual Studio
- VMWare
- Web
-
Articles
- June 2011
- May 2011
- November 2009
- October 2009
- April 2009
- March 2009
- February 2009
- October 2008
- September 2008
- August 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- June 2007
- May 2007
- April 2007
- March 2007
- February 2007
- January 2007
- December 2006
- November 2006
- October 2006
- September 2006
- August 2006
- March 2006
- February 2006
- December 2005
- November 2005
- October 2005
-
Meta




