Construir y ejecutar proyectos C# con la herramienta .NET CLI
Volvemos al directorio C:\csdemo, que es la carpeta padre de HelloWorld, el directorio que trabajamos en la lección anterior.
Crea una carpeta nueva con el comando mkdir HelloWorld2. También puedes crearla manualmente haciendo clic derecho o
Luego accede a esta carpeta desde la línea de comandos con cd HelloWorld2
Ejecuta el siguiente comando para generar una aplicación de consola completamente nueva. console es el nombre de plantilla integrada del .NET CLI para crear programas:
dotnet new consoleLenguaje del código: JavaScript (javascript)
C:\csdemo>mkdir HelloWorld
C:\csdemo>cd HelloWorld
C:\csdemo\HelloWorld>cd ..
C:\csdemo>mkdir HelloWorld2
C:\csdemo>cd HelloWorld2
C:\csdemo\HelloWorld2>dotnet new console
Se ha creado correctamente la plantilla "Aplicación de consola".
Procesando acciones posteriores a la creación...
Restaurando C:\csdemo\HelloWorld2\HelloWorld2.csproj:
Restauración completada.Lenguaje del código: JavaScript (javascript)
Nota: El .NET CLI cuenta con múltiples plantillas de proyectos para desarrollar distintos tipos de aplicaciones, como sitios web ASP.NET, programas de escritorio gráficos Windows Forms y muchos más.
Una vez generado el proyecto, abre su carpeta para ver su contenido

También puedes usar el comando dir en la terminal para listar todos los archivos de la carpeta
Verás que aparecen tres archivos y una carpeta nuevos en el directorio
- Archivo de proyecto:
HelloWorld2.csproj - Archivo de código fuente C#:
Program.cs - Carpeta:
obj(almacena configuraciones de compilación, cachés y otros datos necesarios para la compilación y ejecución de .NET)
Abre HelloWorld2.csproj con el Bloc de notas
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>Lenguaje del código: HTML, XML (xml)

Tengo instalado .NET 10 en mi equipo, por eso los proyectos nuevos usan net10.0 como framework objetivo por defecto
Abre Program.cs para ver el código predeterminado incluido
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");Lenguaje del código: JavaScript (javascript)
Compila y ejecuta el programa usando este comando
dotnet run

Si la ejecución es exitosa, la consola mostrará el texto: Hello World!
Los lectores con conocimientos previos de programación pueden tener una duda: se dice que el punto de entrada de un programa es la función Main, ¿por qué no la vemos aquí?
Se trata de una característica nueva de .NET llamada sentencias de nivel superior (no requiere Main), un azúcar sintáctico de las versiones modernas de C#. En escenarios con código mínimo, el compilador genera automáticamente un punto de entrada Main oculto para quitar el código repetitivo de plantilla
La versión completa y equivalente del código anterior es la siguiente:
using System;
namespace HelloWorld2
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}Lenguaje del código: JavaScript (javascript)

Vuelve a ejecutar el comando dotnet run

El código se compila y ejecuta sin ningún error.
<Project Sdk="Microsoft.NET.Sdk">: Declara que el proyecto utiliza el formato moderno de proyecto SDK de .NET
<OutputType>Exe</OutputType>: Indica que al compilar el proyecto se genera un archivo ejecutable (configuración obligatoria para aplicaciones de consola)
<TargetFramework>net10.0</TargetFramework>: Especifica que el proyecto se ejecuta sobre el framework .NET 10.0
// Importa el espacio de nombres nativo System, aquí reside la clase Console
using System;
// Define el espacio de nombres exclusivo del proyecto HelloWorld2, para aislar clases de distintos proyectos y evitar conflictos de nombres
namespace HelloWorld2
{
// Clase principal del programa, llamada Program por defecto en las plantillas de consola .NET
class Program
{
/// <summary>
/// Único método de entrada de cualquier programa C#, se ejecuta automáticamente al iniciar la app
/// static: Método estático, invocable sin instanciar la clase Program
/// void: Sin valor de retorno; el programa no envía datos al sistema operativo al finalizar
/// string[] args: Matriz de cadenas que recibe los argumentos de línea de comando pasados al lanzar el programa
/// </summary>
static void Main(string[] args)
{
// Console.WriteLine() : Método para imprimir texto en la consola
// WriteLine añade un salto de línea automático después del texto
// "Hello World!" es el texto que se muestra en la ventana de terminal
Console.WriteLine("Hello World!");
}
}
}Lenguaje del código: JavaScript (javascript)

La primera línea del código importa el espacio de nombres System, así puedes usar todas sus clases directamente sin anteponer System. Si omites esta importación, debes escribir el nombre completo de cada clase.
En la llamada Console.WriteLine anterior, Console es el nombre de la clase y WriteLine el nombre del método; consulta la esquina superior derecha de la captura adjunta como referencia.