Crear aplicaciones en .NET desde la terminal

26 Feb 2025 15 min (0) Comentarios

En el mundo real a la hora de crear o desplegar aplicaciones, una vez salimos de nuestro ordenador, no utilizamos un IDE como puede ser visual studio o Rider, sino que realizamos todas las acciones a través de la línea de comandos.

Por ejemplo, la gran mayoría de empresas cuando necesitas crear un proyecto nuevo no lo haces en tu PC, sino que tienes una plataforma interna donde creas dicho proyecto, y al crearlo se crea no solo el proyecto de .NET sino también el repositorio de git, y luego dependiendo cuantos elementos adicionales tu empresa utilice, como por ejemplo, analizadores de código, analizadores de vulnerabilidades, etc se creará un espacio para todos ellos.

 

Pero por detrás utilizamos siempre comandos. Dentro de .NET utilizar la CLI no es muy popular y uno de los motivos que yo creo principales es que la terminal en windows apesta, por lo menos la que viene por defecto. Y aquí viene el patrocinador de este post Warp la cual es una nueva terminal disponible para Windows que es muy potente y que por primera vez (en mi opinión real) hay una terminal de calidad dentro de nuestro maravilloso entorno. 

 

Enlace de referido para Warp: https://app.warp.dev/referral/9D4X54 

 

1 - Crear un proyecto de .NET utilizando la terminal 

 

El primer paso que vamos a ver hoy es como crear un proyecto de .NET utilizando la terminal.  

 

Para crear un proyecto en .NET tenemos que utilizar el comando dotnet new e indicar el tipo de template, por supuesto tenemos mas opciones, pero quizá no las conozcamos todas, lo que significa que podemos hacer un dotnet new -h y ver la ayuda o ejecutar dotnet new list que nos mostrará los tipos de templates que tenemos 

 

dotnet new exmamples

 

En nuestro caso seleccionaremos  un proyecto de API normal en C#, por lo que corremos el siguiente comando

dotnet new webapi --output src --name TerminalExample

Esto nos creará la api en una carpeta llamada src lo que es estándar en el entorno .NET; Con esto ya podrías ejecutar la propia API, pero, para poder abrir el proyecto correctamente con el IDE necesitamos un fichero de solución para ello creamos uno con el siguiente comando:

dotnet new sln

Ahora, debemos meter el proyecto de web api que hemos creado anteriormente a este fichero de solución.

Dentro de Warp podemos editar los propios ficheros si hacemos click en la propia terminal. Pero también podemos utilizar la CLI de .NET añadir el proyecto a la solución con un comando (Sí, esto también se hace en tu empresa cuando creas proyectos). 

 

Lo más posible si no lo haces nunca es que no te acuerdes del comando, no pasa nada Warp tiene IA integrada (Ctrl+i), donde podemos elegir entre, claude, gpt, gemini o deepseek para preguntarle cosas, en este caso voy a pedirle que nos cree un comando para añadir el proyecto a la solución.

La IA nos dará la respuesta correcta y no solo eso, podemos configurar el agente de IA para que ejecute los comandos automáticamente. 

Si por ejemplo el comando falla, el propio agente nos ayuda a debuguear el problema. 

En este caso he puesto el nombre del fichero csproj intencionalmente mal, así que el propio agente, busca en el sistema de ficheros y encuentra una o más soluciones que pueden servirnos:

En nuestro caso ejecutamos el siguiente comando

dotnet sln add src/TemplateExample.csproj

//Output: Project `src\TerminalExample.csproj` added to the solution.

 

 

2 - Añadir un proyecto de test en .NET utilizando la terminal

 

Un proceso similar al anterior, simplemente corremos el siguiente comando para añadir un proyecto de xunit, aunque puedes utilizar nunit o mstest:

dotnet new xunit -n TerminalExample.UnitTest -o Test

 

Y añadimos el proyecto a la solución: 

dotnet sln add Test/TerminalExample.UnitTest.csproj 

 

Ahora simplemente voy a añadir un pequeño caso de uso y un test, para ver la funcionalidad:

public class ExampleUseCase
{
    public int Sum(int a, int b)
    {
        return a + b;
    }
}

[Fact]
public void TestSumIsCorrect()
{
    ExampleUseCase exampleUseCase = new ExampleUseCase();
    int result = exampleUseCase.Sum(1, 2);
    Assert.Equal(3, result);
}

 

Como vemos después de hacer build, Wrap intuye que es lo que vamos a hacer, y simplemente con darle al shift y la flecha derecha nos ahorramos escribir el texto (se puede configurar para que sea el tabulador por ejemplo). 

 

 

3 - Porque es importante estar familiarizado con los comandos de la terminal

 

En C# no solemos utilizar la Terminal, pero en cualquier otro lenguaje o entorno la terminal o línea de comandos es un elemento más del desarrollo. Todos aquellos que haceis front end lo sabreis, absolutamente todo en el front end se hace a través de la línea de comandos, no hay un IDE como lo hay para C# que hace todo por ti. Lo mismo sucede en lenguajes como Ruby o en entornos de Devops, donde absolutamente todo se hace por la terminal. 

 

Por norma general, una vez estás familiarizado, es mucho más rápido y simple hacer las acciones en la terminal que en la interfaz. Y lo que es más importante, más fiable pues los comandos no suelen cambiar, pero las interfaces de los programas cambian constantemente. 

 

Si eres desarrollador de .NET y alguna vez quieres salir de este entorno, te recomiendo encarecidamente que te familiarices con la terminal.

 

 

3.1 - Conectarse a una base de datos con la terminal

 

Un ejemplo muy sencillo es si tienes una app desplegada en algún sistema, y te tienes que conectar a la base de datos porque algo va mal, no sabes muy bien el qué y tienes que ver dicha base de datos. Por temas de seguridad, únicamente te puedes conectar desde la propia máquina, así que tienes que conectarte por ssh a dicha máquina y de ahí correr los comandos SQL de forma manual. Simplemente para verificar información.

 

Nos conectamos con el siguiente comando, en mi caso, esta base de datos está en docker:

docker exec -it mysql-flagx0 mysql -u root -p

 

Desde aquí podemos consultar directamente la base de datos.

Y vemos que el cliente que nos ha llamado porque su flag no funciona tiene el registro eliminado, así que lo activamos de forma manual con la siguiente consulta, también en la terminal: 

mysql> UPDATE flagdb.Flags t
    -> SET t.DeletedtimeUtc = null,
    ->     t.IsDeleted      = 0
    -> WHERE t.Id = 1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

 

 

4 - Otros comandos importantes de .NET en la terminal

 

Dentro de .NET tenemos muchisimos comandos para ser ejecutados, pero hay algunos que son más importantes que otros y por supuesto más comunes.

 

Hemos visto el comando de creación tanto de proyectos como de la soluciones, pero además tenemos otros como pueden ser los siguientes: 

 

dotnet build para construir un proyecto, al que le podemos pasar la configuración --configuration Release para que se haga la build en modo release. 

 

dotnet run para ejecutar un proyecto, al que necesitas poner --project rutaproyecto.csproj si tienes más de uno. 

 

Hay varios de NuGet aunque suelo utilizar siempre la interfaz cuando utilizo nuget, excepto para hacer un dotnet nuget locals all --clear que limpia la caché de nuget, lo cual, en las nuevas versiones no es muy necesario, pero si trabajas con .NET Framework estoy seguro de que habrás tenido que ejecutarlo varias veces. 

 

dotnet test para ejecutar los test dentro de la solución, puedes añadir filtros o almacenar el resultado de los tests utilizando el parámetro --logger

 

En .NET tenemos herramientas que podemos ejecutar con la línea de comandos, como pueden todo el paquete de ayuda de Entity Framework, aunque hay muchas más. 

 

Finalmente los comandos de despliegue de aplicaciones, donde podemos utilizar dontnet publish -c Release -o ./destinationFolder para publicar una app en modo release y este sería el código que vas a desplegar.



Si te ha gustado el contenido, y tienes pensado utilizar Warp, no olvides que puedes utilizar mi código de referido! https://app.warp.dev/referral/9D4X54 

Un saludo!

Uso del bloqueador de anuncios adblock

Hola!

Primero de todo bienvenido a la web de NetMentor donde podrás aprender programación en C# y .NET desde un nivel de principiante hasta más avanzado.


Yo entiendo que utilices un bloqueador de anuncios como AdBlock, Ublock o el propio navegador Brave. Pero te tengo que pedir por favor que desactives el bloqueador para esta web.


Intento personalmente no poner mucha publicidad, la justa para pagar el servidor y por supuesto que no sea intrusiva; Si pese a ello piensas que es intrusiva siempre me puedes escribir por privado o por Twitter a @NetMentorTW.


Si ya lo has desactivado, por favor recarga la página.


Un saludo y muchas gracias por tu colaboración

© copyright 2025 NetMentor | Todos los derechos reservados | RSS Feed

Buy me a coffee Invitame a un café