1
resposta

(DÚVIDA)

Olá, comecei hoje a assistir as aulas e gostaria de tirar uma dúvida.
Sempre que for abrir um arquivo é necessário abrir ele dessa forma em qualquer projeto?
Quando fiz meu primeiro (Hola mundo) não usei o dotnet new console no início.
E quando fiz os códigos igual o professor explicou no vídeo anterior (primeiro programa) não rodou, o Visual Studio consertou os códigos iguais ao que eu tinha escrito igual do professor, mas em outros arquivos esse mesmo código no qual o visual studio (corrigiu e funcionou na primeira) não funcionou na segunda vez na qual tentei. Poderia me explicar ou ajudar? (foi meu primeiro comando).

// dotnet new console -n NomeDoProjeto
//cd NomeDoProjeto
//dotnet build

1 resposta

Oi!

O ponto principal é o seguinte: um programa C# não é só o arquivo .cs com o código, ele precisa de um projeto .NET ao redor dele para conseguir rodar corretamente.

Quando você usa o comando
dotnet new console -n NomeDoProjeto
você está pedindo para o .NET criar toda a estrutura mínima necessária para um programa de console funcionar. Isso inclui:

  • o arquivo .csproj, que diz qual versão do .NET usar, como compilar, etc.
  • um Program.cs já no formato esperado pela versão do C#/.NET
  • pastas e configurações internas que o dotnet build e o dotnet run precisam

Sem isso, o .NET simplesmente não sabe como compilar e executar aquele código.

Agora, sobre a sua primeira pergunta:
“**Sempre que for abrir um arquivo é necessário abrir ele dessa forma em qualquer projeto?**”

Não é “abrir um arquivo”, e sim criar um projeto.
Você não precisa usar dotnet new console toda vez que for programar, mas precisa usar pelo menos uma vez para cada projeto novo.

Depois que o projeto existe:

  • você só abre a pasta ou o .csproj no Visual Studio
  • cria novos arquivos .cs dentro dele
  • escreve o código normalmente

O que não funciona é pegar um arquivo .cs solto, fora de um projeto, e tentar rodar como se fosse um programa completo.

Sobre o seu “Hello World” que funcionou sem o dotnet new console:
Provavelmente aconteceu uma destas situações (bem comuns):

  • o Visual Studio criou o projeto automaticamente para você em segundo plano
  • você usou algum template gráfico do Visual Studio (“Aplicativo de Console”) sem perceber
  • ou o código estava em um projeto que já existia

Ou seja: o projeto existia, só não foi criado via terminal.

Agora, a parte mais confusa (e importante):
O Visual Studio consertou o código e funcionou na primeira vez, mas depois não funcionou em outro arquivo”.

Isso acontece porque o Visual Studio é esperto, mas ele só consegue ajudar quando o contexto está correto.

Exemplo:

  • você cola um código válido de C#
  • mas ele está fora de um projeto, ou
  • está em um arquivo que não pertence ao namespace/projeto certo, ou
  • o projeto está usando outra versão do .NET/C#

Na primeira vez, o Visual Studio pode ter:

  • ajustado o Main
  • corrigido using
  • transformado o código para o modelo de top-level statements (padrão atual do C#)

Mas quando você tentou repetir isso em outro arquivo ou fora do projeto, ele já não tinha como “adivinhar” tudo de novo, e aí não rodou.

Um detalhe importante:
Hoje, no C#, só um arquivo pode conter o ponto de entrada do programa (o Main, mesmo que ele esteja “escondido” pelo modelo moderno).
Se você tentar colocar o mesmo código de início em outro arquivo dentro do mesmo projeto, o programa quebra mesmo.

Para o seu próximo teste, a melhor forma é:

  1. criar um projeto novo com dotnet new console
  2. abrir a pasta no Visual Studio
  3. mexer apenas no Program.cs
  4. rodar com o botão verde ou dotnet run

Abraços;