6

Aplicações .NET com VS Code em Linux

#Linux #.NET Core #.NET
Helena Maximo
Helena Maximo

Hello Coders! :)


Passei alguns dias me batendo para fazer o curso de Desenvolvimento de aplicações com .NET (com o Anderson Clavico Moreira) e resolvi compartilhar com vocês o que eu aprendi por aqui. O problema é que eu tenho um SO Ubuntu e uso o VS Code. Assim, as facilidades do Visual Studio geram um pouco de frustração se você não está rodando uma VM. Por isso, resolvi dar dicas para quem quer fazer, ao menos a primeira aula do Anderson Moreira, no ambiente Linux mesmo.


A solução é usar o dotnet pelo console (usei o aprendizado da aula do Gabriel Faraday). Então... vou passar aqui didaticamente pelas etapas da aula, adaptando o que o Anderson faz no Visual Studio para os comandos através do terminal.


1) Criação do MVC:

dotnet new mvc -n <O-NOME-DA-SUA-APLICAÇÃO-AQUI>


2) Compilar e Rodar:

Sempre que você quiser compilar e rodar a aplicação, como o Anderson faz várias vezes durante a aula, você pode usar

dotnet build
dotnet run

Esse último comando vai te passar o link da aplicação, que você pode checar com Ctrl + click no link.


3) Criação das classes Model:

Não encontrei uma forma automática de criar as classes Model. Acabei fazendo à mão mesmo, inclusive para os imports no início de cada arquivo.


4) Instalação de pacotes:

Logo depois de criar a classe Categoria, o Anderson faz a instalação de dois pacotes. Os nomes dos pacotes são os mesmos que ele usa por lá, mas o comando no CLI é

dotnet add package <NOME-DO-PACOTE>

Por exemplo, os primeiros pacotes que ele instala são

dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools


5) Classe Context e string de conexão:

Quando ele cria a classe Context.cs, é necessário uma string de conexão. Aí a coisa complica, porque o Linux não suporta o LocalDB. Aí eu recomendo essa leitura: SQL Server on Linux (eu fiz os passos da instalação para Ubuntu e foi bem tranquilo).

Tendo instalado o SQL Server para Linux, você pode adaptar a string de conexão para algo como

optionsBuilder.UseSqlServer("Server=localhost; Database=<NOME-DO-SEU-BANCO>, User Id=SA; Password=<SUA-SENHA-DE-ADMINISTRADOR-DO-BANCO>");

Importante notar que, na instalação do SQL Server, ele vai pedir para você configurar uma senha de administrador, por isso tive que trocar a forma de conexão.


6) Migrations:

Na hora de trabalhar com o Migrations, os comandos de criação e de atualização são os que seguem

dotnet ef migrations add InitialCreate
dotnet ef database update

Se você quiser ver o que está sendo feito e criado, inclua a opção "-v" no comando, dessa forma

dotnet ef database -v update


7) Scaffolding e a geração dos controllers:

Para usar o scaffolding e para ter a geração automática dos controllers, vamos precisar de outras coisinhas. Primeiro você vai precisar do ASP.NET Core scaffolder

dotnet tool install -g dotnet-aspnet-codegenerator

Depois você vai precisar dos seguintes pacotes

dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
dotnet add package Microsoft.EntityFrameworkCore.Design

Se precisar, aqui tem mais ajuda.

Aí tem alguns bugs nas versões mais recentes, então vamos precisar de uns arquivos que faltam (se quiserem conferir, aqui está o problema). Um por vez, opere os seguintes comandos no terminal (você precisa estar dentro da pasta do projeto para dar certo)

mkdir Templates && mkdir Templates/ControllerGenerator && mkdir Templates/ViewGenerator

cp -r /home/$USER/.nuget/packages/microsoft.visualstudio.web.codegenerators.mvc/5.0.1/Templates/ControllerGenerator/* ./Templates/ControllerGenerator

cp -r /home/$USER/.nuget/packages/microsoft.visualstudio.web.codegenerators.mvc/5.0.1/Templates/ViewGenerator/* ./Templates/ViewGenerator/

mkdir Templates/DbContext

cp -r /home/helena/.nuget/packages/microsoft.visualstudio.web.codegeneration.entityframeworkcore/5.0.1/Templates/DbContext/* ./Templates/DbContext

Agora a gente consegue gerar automaticamente o código das controllers. Para isso, use o seguinte comando

dotnet aspnet-codegenerator controller -name CategoriasController -m Categoria -dc Context --relativeFolderPath Controllers --useDefaultLayout

Onde "CategoriasController" é o nome do controller, "Categoria" é o modelo usado e "Context" é o contexto usado. Depois, você só precisará mudar o comando para o outro controller que é criado.


8) Adicionar tabela no Migrations:

Depois de criar a classe Produto.cs, o comando para a criação da tabela muda pouca coisa

dotnet ef migrations -v add TabelaProduto

Depois é só dar um update de novo

dotnet ef database update


A criação da Web API com o swagger eu ainda não desvendei por completo, mas, quando eu conseguir, atualizo o artigo. :)


Valeu!

6
82

Comentários (7)

0
Maurício Rocha

Maurício Rocha

28/07/2021 19:06

caramba muito bom!

0
Helena Maximo

Helena Maximo

30/12/2020 09:55

Valeu, galera! :)

0
RAFAEL ALVES

RAFAEL ALVES

29/12/2020 22:23

Muito bom!

1
Marzeu Junior

Marzeu Junior

29/12/2020 22:16

Parabéns!!


Lembrando que para poder usar o dotnet ef você deve instalar a tool antes:


dotnet tool install --global dotnet-ef

0
MICHAEL ANJOS

MICHAEL ANJOS

29/12/2020 21:35

Obrigado pela informação! Esta resposta foi útil pra mim.

0
Felipe felipe

Felipe felipe

29/12/2020 21:32

💜 Falou de .net falou comigo!, Muito bom Helena, Parabéns!!

0
Juliana Izac

Juliana Izac

29/12/2020 21:29

Muito bom Helena!!

"A mente é como um paraquedas: só funciona se estiver aberta."

Brasil