Criando projetos com o .NET CLI

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

  1. Arquivo de projeto: HelloWorld2.csproj
  2. Arquivo de código fonte C#: Program.cs
  3. 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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *