Mitra Global Services

Navimania 47 – Compilar las DLL del proyecto en una sola

Aquí estamos otra semana más. Hoy finalizamos esta larga pero apasionante saga de blog sobre el tema de las DLL.

Como hemos visto, lo primero que hicimos fue crear una DLL de ejemplo (lo podemos ver en el link), después ejecutamos esa DLL en NAV link seguido de su ejecución en Business Central link. Entonces empezamos con un ejemplo donde creábamos una DLL para Json en la que leíamos un Json link y creábamos un Json link. El último fue la ejecución desde Nav de esta DLL link.

Aquí es donde quiero hacer énfasis hoy, porque de esa compilación salieron varias DLL que tuvimos que copiar y llevar a Nav para que todo funcionara bien.

Esto nos va a pasar siempre, tendríamos que copiarlas todas y pegarlas junto a la nuestra y aunque es sencillo, puede ser engorroso a la hora de mantener nuestra aplicación.

Por eso hoy os voy a mostrar cómo compilar todas esas extensiones dentro de la nuestra y que solo nos aparezca una única extensión.

Después del resumen y la explicación, vamos manos a la obra 😎

Como vimos la última vez, en la carpeta de Debug después de compilar, nos devuelve todas las DLL vinculadas a la nuestra + nuestra DLL

Esto en nuestro caso es poco porque solo tenemos la de “Newtonsoft.Json.dll” pero imaginemos que tuviéramos 10 o 15 más y que las tuviéramos que copiar todas.

Bueno pues hay una solución y pasa por “ilmerge” link. Es una extensión que si la configuramos correctamente nos hará el trabajo que queremos realizar, que es el de empacar todo dentro de nuestra DLL.

Entonces como es una DLL que incluimos en nuestro proyecto, lo que haremos es ir al NuGet y buscarla para luego instalarla.

Vamos a administrar paquetes NuGet:

Buscamos la extensión y como en nuestro caso lo hicimos con un framework 3.5, esta extensión nos marca que ya está en desuso.

Instalamos el paquete y también instalamos el siguiente paquete “MSBuild.ILMerge.Task”

Como veremos, nos ha creado unos nuevos archivos en el proyecto:

Nos quedaremos con el de “packages.config”, si añadiéramos nuevas DLL después de instalar el “ilmerge” deberíamos añadir aquí sus referencias para que se empacaran en nuestra DLL.

Sin tocar nada más procedemos a compilamos y veremos que ya no aparece la DLL de “Newtonsoft.Json.dll” y que solo nos muestra nuestra extensión.

Como siempre este ejemplo entero lo tenéis colgado en GitHub en el link.

Esperamos que esta explicación os resulte de utilidad y os emplazamos a nuestra próxima publicación.

Esteve Sanpons

ES