JuanCri.com

jueves 8 de enero, 2009 a las 15:13

Hay diferentes utilidades distribuídas con Mono, las cuales permitenrealizar operaciones sobre assemblies (como mkbundle y el linker). Sin embargo, hay una que siempre me ha gustado mucho: MonoMerge.

MonoMerge utiliza Cecil para unir dos o más assemblies en uno solo.

Hoy necesitaba hacer esto dentro de un pequeño programa en boo. Aquí está el código:

// Importar monomerge
import Mono.Merge from "monomerge.exe"

// Algunas variables
rutaOrigen1 = "origenPrincipal.exe"
rutaOrigen2 = "origenSegundario.exe"
rutaDestino = "final.exe"

// Generar
print "Generando ejecutable..."
mergeContext = MergeContext ()
mergeContext.OutputPath = rutaDestino
mergeContext.Assemblies.Add (rutaOrigen1)
mergeContext.Assemblies.Add (rutaOrigen2)
primaryAssembly = AssemblyFactory.GetAssembly (rutaOrigen1)
secondaryAssembly = AssemblyFactory.GetAssembly (rutaOrigen2)
fix = FixReflectionAfterMerge (mergeContext, primaryAssembly, primaryAssembly)
fix.Process ()
AssemblyFactory.SaveAssembly (primaryAssembly, rutaDestino)

Sería bueno tener otra forma más simple de hacer esto, pero es mucho más simple que utilizar Cecil directamente ;)

Creative Commons License
Blog JuanCri.com por Juan Cristóbal Olivares licenciado bajo la Creative Commons Attribution 2.0 Chile License.
Mono PostgreSQL

JuanCri.com