Generar .exe en Net Core

Hello world,

Con el equipo llevamos un par de semanas desarrollado una aplicación para realizar una migración de datos. Dado que es un one-shot que no se va a reutilizar y donde el tiempo que tarde tampoco es algo “relevante”, hemos montado una sencilla aplicación de consola en net core. Esta aplicación, la única complejidad que tiene es saber como convertir los datos del tipo A al tipo B, con lo que la infraestructura es algo muy sencillo. Contaremos con varios servicios para leer, convertir y escribir, y para resolver dichos servicios hemos montado un pequeño builder. Tampoco entraré en mas detalle ya que no es el objetivo del post.

Pues bien, después de un sprint donde el objetivo era tener la aplicación y que esta migrase una de las primeras entidades y sus relaciones, llegó el día de la demo al equipo,  y ningun@ habíamos caído en preparar un .exe para no lanzar la aplicación desde el Visual Studio! Pues nada, nos vamos a la carpeta bin del proyecto a buscar dicho .exe y…

SORPRESA! NO ESTÁ EL .EXE!!

Lo que parecía una demo tranquilita… todo funcionando desde la tarde/noche anterior… ahora iba a quedar en una “chapuza”! Entonces empiezas a darle vueltas a la cabeza y piensas… net core es multi-plataforma… no tiene sentido que se genere un .exe… tiene sentido que se le pueda especificar que tipo de ejecutable se tiene que generar… y así un largo etc… Pues bien, para los que os que os pase lo mismo que a nosotr@s os voy a explicar como poder generar ese ejecutable. Para ello podremos hacerlo de 2 maneras:

  • Por consola.
  • Desde el Visual Studio.

Consola

Generarlo por consola es muy sencillo, para ello, abrimos una ventana de terminal y ejecutamos en siguiente comando:

Windows 10 --> dotnet publish -c Release -r win10-x64
Linux --> dotnet publish -c Release -r linux-x64
MacOS --> dotnet publish -c Release -r osx-x64

En este caso, los ejecutables que se generarían serian para Windows 10, linux y macOS. En el siguiente enlace os dejo un enlace donde podréis ver mas runtimes: aqui.

Visual Studio

Desde el Visual Studio también es muy sencillo. Para ello haremos botón derecho sobre nuestro proyecto de consola –> Publicar. Una vez seleccionada esta opción nos saldrá una pantalla para seleccionar la ruta donde guardar la publicación. En la parte izquierda selecionaremos carpeta, y en la derecha la ruta:

Captura332.PNG
Pantalla de selección de ruta

Una vez seleccionada la ruta, desplegamos el menú que aparece en el botón Publicar y seleccionaremos la opción de Crear Perfil. Esto nos llevará a la siguiente pantalla donde podremos ver el perfil de publicación, Debug o Release, destino de compilación…

Captura333.PNG
Perfil de publicación

Si clicamos en los lápices, podremos editar nuestra configuración:

Captura334.PNG
Pantalla configuración de perfil y desplegable con tipos de compilación

Una vez realizado esto, ya podremos generar el archivo ejecutable para la plataforma que hayamos seleccionado. Esta configuración se almacenará en un archivo de configuración dentro de las propiedades de nuestro proyecto, en la carpeta “PublishProfiles“. Desde aquí también podremos editar nuestro perfil de publicación. Y este tendrá el siguiente aspecto:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 <PropertyGroup> 
  <PublishProtocol>FileSystem</PublishProtocol>
  <Configuration>Release</Configuration>
  <Platform>Any CPU</Platform>
  <TargetFramework>netcoreapp2.2</TargetFramework>
  <PublishDir>bin\Release\netcoreapp2.2\publish\</PublishDir>
  <SelfContained>false</SelfContained>
  <_IsPortable>true</_IsPortable>
 </PropertyGroup>
</Project>

Y hasta aquí este breve post. Aprovecho para desearos que paséis un gran verano, recargueis las pilas al máximo para una ultima parte del año que se avecina apasionante y cargada de retos, eventos, y conocimiento!

Generar .exe en Net Core

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s