Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

?id=c9e34199-4bfe-45d6-93e5-0df5a8bc99cb

.NET Core / .NET 5: Cómo publicar aplicaciones en un único ejecutable

Cuando compilas una aplicación con .NET Core de cualquier tipo, tienes dos formas básicas de hacerlo:

  • Generando tan solo los ensamblados propios de tu aplicación y de los componentes que utilicen. En este caso debes estar seguro de que los equipos que van a ejecutar la aplicación tienen instalado el runtime de .NET. Esto es lo que hace por defecto Visual Studio cuando compilas.
  • Incluyendo en el resultado todos los archivos propios de .NET, de modo que el runtime se distribuye con tu aplicación y no es necesario que los usuarios instalen nada. Esto facilita mucho el despliegue a costa de tener que mover un montón de archivos (y "megas").

Da igual la modalidad que escojas: al final acabas con un ejecutable y un número mayor o menor de ensamblados relacionados que vas a necesitar según lo que elijas.

Por ejemplo, para publicar la aplicación sólo con los ensamblados propios basta con que escribas en la línea de comandos (dentro de la carpeta del proyecto) lo siguiente:

dotnet publish -c release -r win10-x64 --self-contained false

Esto generará un ejecutable de tu aplicación para Windows de 64 bits (opción -r) con la configuración "Release" (o sea, para producción: opción -c) y de modo que no sea autosuficiente, por lo que necesitará tener .NET instalado para funcionar. Así que obtendrás tan solo tu ejecutable con los ensamblados que necesite (paquetes NuGet y bibliotecas propias que la acompañen).

Si hubiésemos utilizado --self-contained true se hubiesen incluido también todos los ensamblados de tiempo de ejecución de .NET (runtime), por lo que en nuestra carpeta de publicación tendríamos literalmente cientos de archivos aparte del nuestro.

¿Cómo podemos conseguir un único ejecutable con todo lo necesario?

De esta forma podríamos obtener un único archivo que podríamos enviar con confianza a cualquiera, de modo que, sin necesidad de instalar nada, pueda ejecutar nuestra aplicación. Esto es fenomenal para algunos casos de uso, ya que facilitamos mucho la distribución de la aplicación para que la use cualquiera, basta con descargar un archivo y hacer doble-clic.

Hace poco explicaba cómo puedes conseguir esto mismo con .NET "clásico". Para lograrlo hay que emplear una herramienta especial, ajena a la propia plataforma. Además no se incluyen los propios de .NET, sino tan solo los tuyos.

Sin embargo, en .NET Core ya se ha tenido en cuenta esta posibilidad de serie y no necesitamos nada especial: tan sólo el comando dotnet y usar sus opciones con un poco de habilidad.

En esta ocasión, en lugar de contártelo por escrito, he grabado un vídeo práctico en el que te enseño cómo puedes hacerlo no sólo con aplicaciones de consola o escritorio sino incluso para poder distribuir aplicaciones web autocontenidas, con un único .exe a distribuir para que funcionen:

¡Espero que te resulte útil!

José Manuel Alarcón Fundador de campusMVP, es ingeniero industrial y especialista en consultoría de empresa. Ha escrito diversos libros, habiendo publicado hasta la fecha cientos de artículos sobre informática e ingeniería en publicaciones especializadas. Microsoft lo ha reconocido como MVP (Most Valuable Professional) en desarrollo web desde el año 2004 hasta la actualidad. Puedes seguirlo en Twitter en @jm_alarcon o leer sus blog técnico o personal. Ver todos los posts de José Manuel Alarcón
Archivado en: Lenguajes y plataformas

¿Te ha gustado este post?
Pues espera a ver nuestro boletín mensual...

Suscríbete a la newsletter

La mejor formación online para desarrolladores como tú

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.