.NET 6 + ASP.NET Core: novidades nos templates de projetos

Renato Groffe
3 min readSep 13, 2021

--

Já abordei o suporte a Minimal APIs em projetos Web baseados no .NET 6 nos seguintes artigos:

Novidades do .NET 6: Minimal APIs em ASP.NET Core

Novidades do .NET 6: suporte a Swagger em Minimal APIs

E com o Preview 7 do .NET 6 tivemos uma grande novidade relacionada a Minimal APIs: projetos ASP.NET Core a partir deste release serão gerados com base neste novo tipo de implementação, incorporando inclusive funcionalidades do C# 10.

Considerando a criação de projetos Web API com a instrução:

dotnet new webapi -n TestesWebApi

Um projeto em .NET 5 terá os arquivos Program.cs e Startup.cs em sua estrutura:

Já com o .NET 6 Preview 7 teremos apenas o arquivo Program.cs:

O código gerado para a classe Program em .NET 5 foi:

E para o tipo Startup:

Já no .NET 6 o conteúdo do arquivo Program.cs contemplará tudo o que anteriormente era definido nas classes Program e Startup:

Analisando este código é possível observar:

  • A implementação em Program.cs fez uso da funcionalidade conhecida como Top Level Program (introduzida com o C# 9), dispensando inclusive a declaração da classe Program e de seu método Main;
  • Usings referenciando namespaces contendo recursos básicos como Microsoft.AspNetCore.Builder não foram incluídos no código. Esta novidade é chamada de Implicit Using Statements;
  • Um novo modelo para hosting de aplicações é acionado através de uma chamada a WebApplication.CreateBuilder (linha 3).

E as mudanças não param por aqui…

Na próxima listagem temos o arquivo .csproj para a aplicação criada com o .NET 5:

Já no arquivo .csproj da aplicação baseada no .NET 5 Preview 7 notaremos que foi ativada a utilização de Null Reference Types:

Na próxima listagem está o código gerado para a classe WeatherForecast no projeto criado com .NET 5:

Com a versão equivalente para .NET 6 será possível notar algumas diferenças:

  • A propriedade do tipo string Summary foi marcada como um Nullable (?);
  • Foi desnecessário declarar o namespace System devido ao uso de Implicit Using Statements;
  • Chaves foram retiradas da declaração do namespace TestesWebApi, reduzindo ainda mais o código. Este é um exemplo de utilização de uma nova funcionalidade do C# 10 chamada File-scoped namespaces.

Na listagem a seguir está a implementação da classe WeatherForecastController gerada em .NET 5:

A nova versão para este Controller no .NET 6 Preview 7 fará uso de Implicit Using Statements e File-scoped namespaces:

Nos links a seguir estão outros 2 exemplos de projetos Web API baseados em ASP.NET Core e no Preview 7 do .NET 6:

https://github.com/renatogroffe/ASPNETCore6-Preview7-REST_API-ContagemAcessos

https://github.com/renatogroffe/ASPNETCore6-Preview7-Global_Usings-REST_API-ConversoesMedidas

Outros templates como Razor Pages e MVC também passaram por mudanças similares.

Aproveito esse espaço para um convite…

Dia 27/09 (segunda) às 21:00 horário de Brasília — teremos mais um evento online e gratuito no canal Canal .NET.

Ao longo desta live abordarei dicas, truques e alternativas úteis para o desenvolvimento Back-End e de APIs REST com .NET 5, ASP.NET Core, Azure Functions. Ao longo da apresentação será coberto o uso de diferentes frameworks, serviços na nuvem, mensageria, bancos de dados e boas práticas de forma a facilitar e tornar mais dinâmica a implementação de soluções baseadas na plataforma .NET no seu dia a dia.

Teremos também algumas novidades do .NET 6 demonstradas na prática!

Para participar faça sua inscrição no link a seguir, a transmissão acontecerá via YouTube:

https://bit.ly/live-backend-dotnet-set-2021

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker

No responses yet