Criar e executar projetos C# com a ferramenta .NET CLI
Voltamos para o diretório C:\csdemo, que é a pasta pai da HelloWorld vista na aula anterior.
Crie uma nova pasta usando o comando mkdir HelloWorld2. Você também pode criar uma pasta manualmente com o botão direito do mouse ou
Depois, use o comando cd HelloWorld2 no terminal para acessar essa pasta
Execute o comando abaixo para gerar um aplicativo de console totalmente novo. console é o nome do modelo nativo do .NET CLI para gerar programas:
dotnet new consoleCode language: 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
O modelo "Aplicativo de console" foi criado com sucesso.
Processando ações pós-criação...
Restaurando C:\csdemo\HelloWorld2\HelloWorld2.csproj:
Restauração concluída.Code language: JavaScript (javascript)
Observação: O .NET CLI disponibiliza vários modelos de projeto para construir diferentes tipos de aplicativos, como sites ASP.NET, programas desktop gráficos Windows Forms e outros.
Após gerar o projeto, abra a pasta do projeto para ver os arquivos

Você também pode rodar o comando dir no terminal para listar todos os arquivos da pasta
Você notará que três arquivos e uma pasta nova foram adicionados ao diretório
- Arquivo de projeto:
HelloWorld2.csproj - Arquivo de código fonte C#:
Program.cs - Pasta:
obj(armazena configurações de compilação, cache e outros dados necessários para compilar e executar o .NET)
Abra o HelloWorld2.csproj com o Bloco de Notas
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>Code language: HTML, XML (xml)

Tenho o .NET 10 instalado na minha máquina, então projetos novos usam net10.0 como framework alvo por padrão
Abra o arquivo Program.cs para ver o código padrão nativo
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");Code language: JavaScript (javascript)
Compile e execute o programa digitando esse comando
dotnet run

Quando a execução for bem-sucedida, o console exibirá o texto: Hello World!
Leitores com experiência em programação podem ter uma dúvida: dizem que o ponto de entrada de um programa é a função Main, mas por que não a vemos aqui?
Essa é uma funcionalidade moderna do .NET chamada instruções de nível superior (sem necessidade de Main), um açúcar sintático das versões novas do C#. Para códigos mínimos, o compilador cria automaticamente um ponto de entrada Main oculto e remove o código repetitivo de modelo
A versão completa equivalente do código acima é esta:
using System;
namespace HelloWorld2
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}Code language: JavaScript (javascript)

Execute o comando dotnet run novamente

O código compila e roda normalmente sem erros.
<Project Sdk="Microsoft.NET.Sdk">: Declara que o projeto usa o novo formato de projeto SDK do .NET
<OutputType>Exe</OutputType>: Define que a compilação gera um arquivo executável (configuração obrigatória para apps de console)
<TargetFramework>net10.0</TargetFramework>: Especifica que o projeto é executado sobre o framework .NET 10.0
// Importa o namespace nativo System, onde está a classe Console
using System;
// Define o namespace exclusivo do projeto HelloWorld2, para separar classes de projetos diferentes e evitar conflitos de nomes
namespace HelloWorld2
{
// Classe principal do aplicativo, chamada Program por padrão nos modelos de console do .NET
class Program
{
/// <summary>
/// Único método de entrada de todo programa C#, executado automaticamente ao abrir o app
/// static: Método estático, chamável sem instanciar a classe Program
/// void: Sem valor de retorno; o programa não envia dados ao sistema operacional ao finalizar
/// string[] args: Vetor de strings que recebe os argumentos de linha de comando passados na inicialização
/// </summary>
static void Main(string[] args)
{
// Console.WriteLine() : Método para exibir texto no console
// WriteLine insere uma quebra de linha automática após o texto
// "Hello World!" é o texto impresso na janela do terminal
Console.WriteLine("Hello World!");
}
}
}Code language: JavaScript (javascript)

A primeira linha do código importa o namespace System, então todas as classes dele podem ser usadas diretamente sem o prefixo System. Se omitir essa importação, você deve escrever o nome completo de cada classe.
Na chamada Console.WriteLine acima, Console é o nome da classe e WriteLine é o nome do método; consulte o canto superior direito da captura de tela para referência.