C# Projetos (dotnet new console)
Até aqui, a Ana escreveu um arquivo ola.cs e rodou com dotnet run ola.cs. Para programas pequenos, isso basta. Mas quase todo programa de verdade em C# é um projeto: uma pasta com um arquivo de configuração (o .csproj) e um ou mais arquivos de código. É assim que funcionam os tutoriais, os livros, o Visual Studio e o trabalho em equipe. Nesta aula você cria o seu primeiro projeto com dotnet new console, conhece cada arquivo que ele gera, roda com dotnet run, compila com dotnet build e descobre o que fica guardado nas pastas bin e obj.
- Criar um projeto com
dotnet new console -o Olae entender cada linha da saída. - O que tem no
Ola.csproje noProgram.csgerados, linha por linha. - Rodar o projeto com
dotnet rune compilar sem rodar comdotnet build. - O que são as pastas
bin/Debug/net10.0eobj, e os arquivos.dll,.pdbe.json. - A diferença entre
-o(a pasta) e-n(o nome), e como rodar um projeto de fora da pasta dele. - Quando usar um arquivo solto e quando usar um projeto.
- Os erros mais comuns: rodar fora da pasta, criar por cima de um projeto, erro no
Program.cs.
Todos os comandos desta aula foram executados na máquina fictícia da Ana (usuária ana, computador notebook), com o .NET 10 SDK do Ubuntu 26.04 (dotnet --version = 10.0.112). Os projetos ficam em ~/projetos. As saídas foram copiadas da tela, em português, como aparecem num Ubuntu em pt-BR.
A ideia: o bilhete e o fichário
Um arquivo ola.cs solto é como um bilhete: uma folha só, que você escreve e entrega. Rápido e prático.
Um projeto é como um fichário de escola. Ele tem uma capa com as informações do dono (o nome, a turma, as regras da matéria) e, dentro, quantas folhas você quiser. No C#:
| No fichário | No projeto | Exemplo |
|---|---|---|
| O fichário inteiro | A pasta do projeto | ~/projetos/Ola |
| A capa, com as regras | O arquivo de projeto, .csproj | Ola.csproj |
| As folhas | Os arquivos de código, .cs | Program.cs |
| A pasta de rascunhos que o professor devolve | As pastas bin e obj, criadas pelo dotnet | bin/Debug/net10.0/Ola.dll |
O .csproj diz ao dotnet que tipo de programa é aquele, qual versão do .NET usar e quais recursos ligar. Os arquivos de código são todos os .cs da pasta: o dotnet pega todos sozinho, sem você precisar listá-los.
1. Criar o projeto: dotnet new console
A Ana entra na pasta ~/projetos (criando-a, se ainda não existe) e pede um projeto novo:
$ mkdir -p projetos && cd projetos $ dotnet new console -o Ola O modelo "Aplicativo do Console" foi criado com êxito. Processando ações pós-criação... Restaurando /home/ana/projetos/Ola/Ola.csproj: Determinando os projetos a serem restaurados... /home/ana/projetos/Ola/Ola.csproj restaurado (em 106 ms). A restauração foi bem-sucedida.
- dotnet
- A ferramenta do .NET, a mesma que você já usou com
dotnet run ola.cs(aula Rodar com dotnet run). - new
- "Novo": crie algo novo a partir de um modelo (em inglês, template), uma espécie de forma de bolo com os arquivos já prontos.
- console
- O nome do modelo: um aplicativo de console, ou seja, um programa que roda no terminal, escrevendo e lendo texto. É o tipo de programa de todo o Nível 1.
- -o Ola
- output = "saída": crie tudo numa pasta nova chamada
Ola. Sem o-o, os arquivos cairiam na pasta atual (seção 6).
E a saída, linha por linha:
| Linha | O que quer dizer |
|---|---|
O modelo "Aplicativo do Console" foi criado com êxito. | Os arquivos foram criados. "Aplicativo do Console" é o nome completo do modelo console. |
Processando ações pós-criação... | Depois de criar, o modelo pede mais uma tarefa: a restauração. |
Restaurando /home/ana/projetos/Ola/Ola.csproj: | Restaurar (restore) é conferir de quais bibliotecas o projeto precisa e baixar as que faltam. Este projeto não usa nenhuma biblioteca extra, então foi rápido (106 milissegundos). Os pacotes extras, chamados NuGet, têm aula própria no Nível 3. |
A restauração foi bem-sucedida. | Pronto: o projeto pode ser compilado. |
2. O que foi criado
Dentro da pasta nova:
$ cd Ola $ ls -la total 20 drwxrwxr-x 3 ana ana 4096 out 17 12:37 . drwxrwxr-x 3 ana ana 4096 out 17 12:37 .. drwxrwxr-x 2 ana ana 4096 out 17 12:37 obj -rw-rw-r-- 1 ana ana 243 out 17 12:37 Ola.csproj -rw-rw-r-- 1 ana ana 103 out 17 12:37 Program.cs
São só três coisas: o arquivo de projeto Ola.csproj (243 bytes), o código Program.cs (103 bytes) e uma pasta obj, criada pela restauração. Repare que o .csproj ganhou o nome da pasta: Ola.
O arquivo de projeto: Ola.csproj
$ cat Ola.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
Ele é escrito em XML, um formato de texto com etiquetas entre < >. Cada informação fica entre uma etiqueta que abre (<OutputType>) e uma que fecha, com barra (</OutputType>). Você não precisa saber XML: basta ler.
- <Project Sdk="Microsoft.NET.Sdk">
- "Projeto que usa o SDK do .NET". O SDK (aula .NET: SDK, Runtime e CLR) traz as regras de como compilar um projeto C#. Por isso o arquivo é tão curto: o resto vem pronto do SDK.
- <PropertyGroup>
- "Grupo de propriedades": as configurações do projeto ficam aqui dentro.
- <OutputType>Exe</OutputType>
- "Tipo de saída: executável". O resultado é um programa que se pode rodar. (Uma biblioteca, que só serve para outros programas usarem, não teria essa linha. Aula Bibliotecas de Classes.)
- <TargetFramework>net10.0</TargetFramework>
- "Plataforma de destino: .NET 10". O programa vai rodar no .NET 10, e a versão da linguagem é a que vem com ele: C# 14 (aula Versões do C# e do .NET).
- <ImplicitUsings>enable</ImplicitUsings>
- "
usingimplícitos: ligado". É por causa dessa linha que você escreveConsole.WriteLinesem pôrusing System;no topo do arquivo. Ousingtem aula própria: Namespaces e using. - <Nullable>enable</Nullable>
- "Anuláveis: ligado". Liga os avisos que protegem você de um dos erros mais comuns da programação, o valor
nullonde não devia (aula Referências Anuláveis). Deixe sempre ligado.
dotnet run ola.cs usa essas mesmas regras
Quando você roda um arquivo solto, o dotnet monta, escondido, um projeto com estas mesmas configurações (Exe, net10.0, ImplicitUsings e Nullable ligados). Por isso o mesmo código funciona igualzinho nas duas formas.
O código: Program.cs
$ cat Program.cs
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
- // See https://aka.ms/…
- Um comentário: tudo depois de
//é ignorado pelo compilador. Diz "veja este endereço para mais informações" (sobre o modelo). Pode apagar. Aula Comentários. - Console.WriteLine("Hello, World!");
- A única instrução do programa: escreve
Hello, World!("Olá, mundo!") no terminal. É o mesmo programa da aula Olá, Mundo, em inglês.
O nome Program.cs é só um costume: o dotnet não exige esse nome. Repare também que não há class Program nem static void Main, que você vai ver em muitos livros e tutoriais. Esse jeito curto se chama instruções de nível superior, e a próxima aula, Program.cs e o Main, mostra as duas formas lado a lado.
3. Rodar: dotnet run
Dentro da pasta do projeto, basta dotnet run, sem nome de arquivo:
$ dotnet run Hello, World!
O dotnet run procura um .csproj na pasta atual, compila todos os .cs do projeto e, se não houver erro, roda o programa. Agora a Ana troca o conteúdo do Program.cs pela lista de compras dela. (Aqui ela usa o cat > do terminal, que grava tudo o que vem até a linha FIM; você pode usar qualquer editor de texto, como mostra a aula Editores e IDEs.)
$ cat > Program.cs <<'FIM'
> Console.WriteLine("Lista de compras da Ana");
> Console.WriteLine("- arroz");
> Console.WriteLine("- café");
> FIM
$ dotnet run
Lista de compras da Ana
- arroz
- café
$ ls
bin « pasta nova, criada pelo dotnet run
obj
Ola.csproj
Program.cs
Duas coisas para reparar:
- O
dotnet runpercebeu que o código mudou e compilou de novo antes de rodar. Você nunca precisa compilar "na mão" antes dodotnet run. - Apareceu uma pasta
bin. É lá que fica o programa compilado (seção 4).
No editor do guia, o botão Rodar faz o papel do dotnet run. Numa caixa com um arquivo só, como a de baixo, ele roda como o dotnet run Program.cs de um arquivo solto; com duas ou mais abas .cs, a caixa vira um projeto, e o terminal dela mostra dotnet run numa pasta de projeto (aula O Editor do Guia).
Missão: este é o Program.cs do projeto da Ana. Clique em Rodar e veja o Hello, World!. Depois troque o texto para Lista de compras da Ana e acrescente uma linha que escreva - feijão, copiando a primeira linha e trocando só o texto entre aspas.
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
Console.WriteLine("Lista de compras da Ana");
Console.WriteLine("- feijão");
4. Compilar sem rodar: dotnet build e a pasta bin
Compilar é traduzir o seu código C# para uma forma que o .NET sabe executar. O dotnet run compila e roda; o dotnet build ("construir") só compila, e mostra um relatório:
$ dotnet build
Determinando os projetos a serem restaurados...
Todos os projetos estão atualizados para restauração.
Ola -> /home/ana/projetos/Ola/bin/Debug/net10.0/Ola.dll
Compilação com êxito.
0 Aviso(s)
0 Erro(s)
Tempo Decorrido 00:00:01.26
| Linha | O que quer dizer |
|---|---|
Determinando os projetos a serem restaurados...Todos os projetos estão atualizados para restauração. | Antes de compilar, o build faz a restauração (seção 1). Como nada mudou nas bibliotecas, não havia o que baixar. |
Ola -> /home/ana/projetos/Ola/bin/Debug/net10.0/Ola.dll | O projeto Ola virou o arquivo Ola.dll, nessa pasta. A seta quer dizer "virou". |
Compilação com êxito. | Compilou sem erros. |
0 Aviso(s) / 0 Erro(s) | A contagem de avisos e erros. Os dois têm aula própria: Lendo Erros do Compilador e Avisos do Compilador. |
Tempo Decorrido 00:00:01.26 | Quanto tempo levou: 1,26 segundo. |
O que tem em bin/Debug/net10.0
O caminho conta uma história: bin (de binary, "binário", o programa já traduzido), Debug (a configuração usada, explicada logo abaixo) e net10.0 (a plataforma do .csproj).
$ ls bin/Debug/net10.0 Ola Ola.deps.json Ola.dll Ola.pdb Ola.runtimeconfig.json
| Arquivo | O que é |
|---|---|
Ola.dll | O seu programa compilado. Não é código de máquina: é uma linguagem intermediária, a IL, que o .NET traduz para o processador na hora de rodar (aula .NET: SDK, Runtime e CLR). DLL vem de dynamic-link library, "biblioteca de ligação dinâmica". |
Ola | Um pequeno executável do Linux (no Windows, seria Ola.exe). Ele só liga o .NET e manda rodar o Ola.dll. |
Ola.pdb | Os símbolos de depuração (program database). É graças a ele que um erro mostra o arquivo e a linha, como em in /home/ana/projetos/Ola/Program.cs:line 2. |
Ola.runtimeconfig.json | Diz qual versão do .NET deve rodar o programa (a 10). |
Ola.deps.json | A lista das bibliotecas de que o programa depende (dependencies). |
Dá para rodar o programa compilado de dois jeitos, sem compilar de novo:
$ ./bin/Debug/net10.0/Ola Lista de compras da Ana - arroz - café $ dotnet bin/Debug/net10.0/Ola.dll Lista de compras da Ana - arroz - café $ echo $? 0 « código de saída 0: deu tudo certo
O primeiro usa o executável; o segundo entrega o .dll direto para o dotnet. No dia a dia, porém, use dotnet run: ele confere se o código mudou e recompila quando precisa. Rodar o arquivo da pasta bin depois de mudar o código mostra a versão antiga, até você rodar dotnet build de novo.
A pasta obj
obj (de object, "objeto") guarda os arquivos intermediários: o resultado da restauração e as peças que o compilador usa para não recompilar tudo do zero a cada vez.
$ ls obj Debug Ola.csproj.nuget.dgspec.json Ola.csproj.nuget.g.props Ola.csproj.nuget.g.targets project.assets.json project.nuget.cache
Você nunca precisa abrir nem editar nada em bin e obj. As duas pastas podem ser apagadas a qualquer momento: o próximo dotnet build cria tudo de novo. Por isso elas também não vão para o controle de versão (o Git), nem para o pendrive quando você leva o projeto para outro computador: leve só o .csproj e os .cs.
Debug e Release, e o dotnet clean
Debug ("depuração") é a configuração padrão, feita para quem está programando: compila rápido e guarda tudo o que ajuda a achar erros. Release ("lançamento") é a versão otimizada, para entregar aos usuários. Para escolher, use -c (configuration):
$ dotnet build -c Release
Determinando os projetos a serem restaurados...
Todos os projetos estão atualizados para restauração.
Ola -> /home/ana/projetos/Ola/bin/Release/net10.0/Ola.dll
Compilação com êxito.
0 Aviso(s)
0 Erro(s)
Tempo Decorrido 00:00:01.22
$ ls bin
Debug
Release « uma pasta para cada configuração
E o dotnet clean ("limpar") apaga o que o build gerou na configuração Debug (a pasta bin/Debug/net10.0 fica vazia; a Release continua lá). A saída dele é mais falante, no estilo do MSBuild, a ferramenta que o dotnet usa por baixo para compilar, mas termina do mesmo jeito: Compilação com êxito.. Durante o Nível 1, você vai usar sempre o Debug, sem precisar pensar nisso. Publicar um programa para outras pessoas é assunto da aula Publicar.
5. Rodar de fora da pasta: --project
O dotnet run procura o projeto na pasta atual. Para rodar um projeto que está em outra pasta, diga onde ele está com --project:
$ dotnet run --project Ola Lista de compras da Ana - arroz - café
Esquecer de entrar na pasta é o erro número 1 com projetos (veja em Quando dá errado).
6. Escolher o nome: -o, -n e a pasta atual
O -o escolhe a pasta. O -n (name) escolhe o nome do projeto, que vira o nome do .csproj e do programa. Sem o -n, o nome é o da pasta. A Ana quer uma pasta Lojinha com um programa chamado Caixa:
$ dotnet new console -o Lojinha -n Caixa O modelo "Aplicativo do Console" foi criado com êxito. Processando ações pós-criação... Restaurando /home/ana/projetos/Lojinha/Caixa.csproj: Determinando os projetos a serem restaurados... /home/ana/projetos/Lojinha/Caixa.csproj restaurado (em 107 ms). A restauração foi bem-sucedida. $ ls Lojinha Caixa.csproj obj Program.cs
Sem -o, o projeto é criado na pasta em que você está, e ganha o nome dela. Útil quando a pasta já existe:
$ mkdir Agenda && cd Agenda $ dotnet new console O modelo "Aplicativo do Console" foi criado com êxito. Processando ações pós-criação... Restaurando /home/ana/projetos/Agenda/Agenda.csproj: Determinando os projetos a serem restaurados... /home/ana/projetos/Agenda/Agenda.csproj restaurado (em 106 ms). A restauração foi bem-sucedida. $ ls Agenda.csproj obj Program.cs
O costume do C# é dar nomes de projeto com cada palavra começando em maiúscula e sem espaços nem acentos: Ola, ListaDeCompras, JogoDaVelha. Esse estilo se chama PascalCase (aula Nomes e Convenções). Espaços no nome da pasta atrapalham no terminal, e o nome do projeto também vira o nome do namespace do código.
Todas as opções: --help
O próprio dotnet explica as opções de cada modelo. Um pedaço:
$ dotnet new console --help
Aplicativo do Console (C#)
Autor: Microsoft
Descrição: Um projeto para criar um aplicativo de linha de comando que pode ser executado no .NET no Windows, Linux e macOS
Uso:
dotnet new console [options] [opções de modelo]
Opções:
-n, --name <name> O nome da saída que está sendo criada. Se nenhum nome
for especificado, o nome do diretório de saída será
usado.
-o, --output <output> Local para colocar a saída gerada.
--dry-run Exibe um resumo do que aconteceria se a linha de
comando especificada fosse executada se resultar em
uma criação de modelo. [default: False]
--force Força o conteúdo a ser gerado mesmo que ele altere
arquivos existentes. [default: False]
…
Opções do modelo:
…
--use-program-main Se deve gerar uma classe de Programa explícita e
um método principal em vez de instruções de
nível superior.
A última opção, --use-program-main, gera o Program.cs no estilo antigo, com class Program e static void Main. Ela aparece na próxima aula.
Arquivo solto ou projeto: qual usar
Arquivo solto (dotnet run ola.cs) .NET 10 | Projeto (dotnet new console) | |
|---|---|---|
| Arquivos | Um .cs, nada mais | Uma pasta com .csproj e quantos .cs quiser |
| Como rodar | dotnet run ola.cs | dotnet run (dentro da pasta) |
| Configuração | A padrão (a mesma do modelo console) | No .csproj, do jeito que você quiser |
| Bom para | Aprender, testar uma ideia, scripts curtos | Programas com vários arquivos, pacotes NuGet, testes, trabalho em equipe |
| Existe desde | .NET 10 (novembro de 2025) | Sempre: é o que você vai ver em todo livro e tutorial |
No guia, as aulas dos Níveis 1 e 2 usam o arquivo solto, que é mais rápido. Quando um programa precisar de vários arquivos ou de pacotes, a aula cria um projeto. E um arquivo solto que cresceu pode virar projeto: o comando dotnet project convert ola.cs cria uma pasta ola com o .cs e um ola.csproj (com algumas configurações a mais, que você pode apagar).
Quando dá errado
Não foi possível localizar um projeto para executar.
O que significa: você rodou dotnet run numa pasta sem .csproj. Aqui a Ana estava na pasta pessoal, e não na do projeto:
$ dotnet run Não foi possível localizar um projeto para executar. Verifique se existe um projeto em /home/ana ou passe o caminho para o projeto usando --project.
Como consertar: entre na pasta do projeto (cd ~/projetos/Ola) ou diga onde ele está: dotnet run --project ~/projetos/Ola. Se a ideia era rodar um arquivo solto, dê o nome dele: dotnet run ola.cs. Em inglês, para pesquisar: Couldn't find a project to run.
A criação deste modelo fará alterações nos arquivos existentes
O que significa: a pasta já tem um projeto com aqueles nomes. O dotnet new se recusa a apagar o seu trabalho e termina com o código de saída 73:
$ dotnet new console -o Ola A criação deste modelo fará alterações nos arquivos existentes: Sobrescrever Ola/Ola.csproj Sobrescrever Ola/Program.cs Para criar o modelo mesmo assim, execute o comando com a opção “--force”: dotnet new console -o Ola --force Para obter detalhes sobre o código de saída, consulte https://aka.ms/templating-exit-codes#73 $ echo $? 73
Como consertar: escolha outro nome de pasta. Só use --force se quiser mesmo trocar o seu Program.cs pelo "Hello, World!" do modelo: o que você escreveu nele se perde.
error CS1002: ; esperado [/home/ana/projetos/Ola/Ola.csproj]
O que significa: um erro no código. Num projeto, a mensagem termina com o caminho do .csproj entre colchetes, para dizer de qual projeto ela veio. Aqui faltou o ; no fim da linha 1:
$ dotnet run; echo "código de saída: $?" /home/ana/projetos/Ola/Program.cs(1,45): error CS1002: ; esperado [/home/ana/projetos/Ola/Ola.csproj] Ocorreu uma falha no build. Corrija os erros de build e execute novamente. código de saída: 1
Com erro, o programa não roda: nem a primeira linha aparece. O dotnet build mostra o mesmo erro duas vezes, uma no meio da compilação e outra no resumo do fim, junto da contagem (FALHA da compilação., 1 Erro(s)).
Como consertar: leia o arquivo e a posição (linha,coluna) e corrija ali. Como ler cada parte da mensagem é o assunto de Lendo Erros do Compilador.
error CS8802: Apenas uma unidade de compilação pode ter instruções de nível superior.
O que significa: o projeto compila todos os .cs da pasta juntos. A Ana criou um segundo arquivo, Outro.cs, também com um Console.WriteLine solto, e agora o projeto tem dois "começos". (Em inglês: Only one compilation unit can have top-level statements.)
Como consertar: só um arquivo do projeto pode ter instruções soltas. Os outros arquivos guardam classes e métodos, que aparecem no Nível 2. Se o arquivo extra era só um teste, apague-o ou rode-o à parte, como arquivo solto, fora da pasta do projeto. A aula Program.cs e o Main explica o que é esse "começo".
O que significa: ou o arquivo não foi salvo (o dotnet lê o disco, não a tela do editor), ou você rodou o programa direto da pasta bin, que só muda depois de um novo build.
Como consertar: salve (Ctrl+S) e use sempre dotnet run, que recompila quando precisa.
Missão: a Ana mudou o Program.cs e o projeto parou de compilar. Rode, leia o error CS1002 e a posição (linha,coluna), e conserte para o programa mostrar as três linhas abaixo.
Lista de compras da Ana - arroz - café
Console.WriteLine("Lista de compras da Ana")
Console.WriteLine("- arroz");
Console.WriteLine("- café");
Console.WriteLine("Lista de compras da Ana");
Console.WriteLine("- arroz");
Console.WriteLine("- café");
Referência rápida
| Comando | O que faz |
|---|---|
dotnet new console -o Nome | Cria um projeto de console na pasta nova Nome |
dotnet new console -o Pasta -n Nome | Pasta e nome do projeto diferentes |
dotnet new console | Cria o projeto na pasta atual, com o nome dela |
dotnet new console --use-program-main | Gera o Program.cs com class Program e Main |
dotnet run | Compila (se mudou) e roda o projeto da pasta atual |
dotnet run --project Pasta | Roda o projeto de outra pasta |
dotnet build | Só compila; o resultado vai para bin/Debug/net10.0 |
dotnet build -c Release | Compila a versão otimizada, em bin/Release/net10.0 |
dotnet clean | Apaga o que o build gerou |
dotnet project convert ola.cs | Transforma um arquivo solto num projeto |
dotnet new console --help | Mostra todas as opções do modelo |
Exercícios
1. Criar
Complete o comando que cria um projeto de console numa pasta nova chamada Notas:
2. Rodar
Já dentro da pasta Notas, qual comando compila e roda o projeto?
3. Onde fica o programa?
Depois de dotnet build no projeto Notas, complete o caminho do programa compilado:
4. Qual arquivo diz que o projeto usa o .NET 10?
5. A Ana apagou as pastas bin e obj sem querer. O que acontece?
6. Com dotnet new console -o Loja -n Caixa, qual é o nome do arquivo de projeto?
7. Na pasta pessoal, a Ana digitou dotnet run e apareceu Não foi possível localizar um projeto para executar. Qual é a causa?
Missão final: o projeto da agenda
Missão: a Ana criou o projeto Agenda com dotnet new console, e o Program.cs ainda é o do modelo. Apague o comentário e o Hello, World! e escreva um programa que mostre exatamente estas três linhas:
Agenda da Ana Segunda: dentista Quarta: feira
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
Console.WriteLine("Agenda da Ana");
Console.WriteLine("Segunda: dentista");
Console.WriteLine("Quarta: feira");
No computador, depois de escrever esse código no Program.cs, a Ana rodaria dotnet run dentro de ~/projetos/Agenda e veria as mesmas três linhas.
Resumo
- Um projeto é uma pasta com um arquivo
.csproj(a configuração) e arquivos.cs(o código). Crie comdotnet new console -o Nome. - O
.csprojdo modelo diz: programa executável (Exe), .NET 10 (net10.0),usingimplícitos e anuláveis ligados. - O
Program.csdo modelo é umConsole.WriteLine("Hello, World!");com instruções de nível superior, semMain. dotnet run, dentro da pasta, compila quando precisa e roda. Fora dela, use--project.dotnet buildsó compila. O programa vai parabin/Debug/net10.0(Nome.dll, o executávelNome, o.pdbe dois.json);objguarda os intermediários. As duas pastas podem ser apagadas.-oescolhe a pasta,-nescolhe o nome. Odotnet newnão sobrescreve um projeto existente sem--force.- Num projeto, as mensagens de erro terminam com
[caminho/Nome.csproj], e só um arquivo pode ter instruções de nível superior. - Próximo passo: Program.cs e o Main, o mesmo programa na forma curta e na forma clássica.