Novidades do .NET 6: Implicit Usings

Renato Groffe
3 min readOct 17, 2021

--

Já abordei a utilização de Global Usings com o C# 10 em um artigo anterior neste blog:

Novidades do C# 10: Global Usings

Com esta novidade podemos centralizar em um arquivo .cs diversas declarações using, tornando desnecessário que tais namespaces sejam referenciados em múltiplos pontos de um projeto.

E em um segundo artigo também comentei a respeito de mudanças em templates de projetos baseados no .NET 6, incluindo o uso de uma nova funcionalidade chamada Implicit Usings:

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

O que muitos Desenvolvedores .NET talvez ainda não saibam é que estas 2 novidades estão diretamente ligadas.

E aproveito esse espaço para um convite…

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

Ao longo desta live eu (Renato Groffe) e o MVP André Secco apresentaremos as principais novidades que integram a versão 10 da linguagem C#, com exemplos de implementação que já utilizam o .NET 6 e ASP.NET Core.

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

https://bit.ly/live-csharp10-canaldotnet

Ao criar um projeto com o Release Candidate 2 do .NET 6 a utilização de Implicit Usings virá habilitada por default. Isto acontecerá por meio de um arquivo .cs gerado automaticamente e cujo nome segue o padrão:

<NOME DO PROJETO>.GlobalUsings.g.cs

Estando localizado no diretório \obj\Debug\net6.0\:

E em que diversas declarações do tipo global using estarão incluídas e dependendo sempre do template escolhido (o exemplo a seguir é de um projeto do tipo Web API chamado APIConversoes):

Mas e se quisermos incluir outros namespaces para que sejam considerados como Implicit Usings?

Essa possibilidade existe e envolve ajustes no arquivo .csproj do projeto em questão. Isto envolverá a inclusão de uma seção delimitada pela tag ItemGroup e elementos Using com o atributo Include referenciando os namespaces, como indicado no trecho de código a seguir:

  <ItemGroup>
<Using Include="System.Net"/>
<Using Include="Microsoft.AspNetCore.Mvc"/>
<Using Include="APIConversoes.Models"/>
</ItemGroup>

E no arquivo .csproj da aplicação que utilizei para testes:

Após a gravação destes ajustes o arquivo .GlobalUsings.g.cs (situado em \obj\Debug\net6.0\) será modificado automaticamente, de forma a considerar os 3 namespaces indicados em .csproj:

No próprio Visual Studio Code teremos a detecção automática em um arquivo .cs da eventual presença dos namespaces configurados como Implicit Usings, com a geração de um alerta indicando que os mesmos podem ser removidos:

Clique nesta imagem para visualizar com uma melhor resolução

O exemplo aqui apresentado disponibilizado no GitHub:

https://github.com/renatogroffe/ASPNETCore6-RC2-ImplicitUsings_Usings-REST_API-ConversoesMedidas

--

--

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