Em 4 de dezembro, o .NET Core 2.2 foi lançado. "Quem pode se surpreender com as notícias de uma semana atrás?" - você pergunta e estará certo ... e, a propósito, você já foi atualizado? )
Agora vamos ao caso. A nova versão inclui aprimoramentos de diagnóstico em tempo de execução, suporte ao ARM32 para Windows e suporte ao Azure Active Directory para SQL Client. As maiores melhorias nesta versão são o ASP.NET Core.

O ASP.NET Core 2.2 e o Entity Framework Core 2.2 foram lançados no mesmo dia.
O .NET Core 2.2 para Windows, macOS e Linux já está esperando por você nos links:
O suporte ao .NET Core 2.2 está presente no Visual Studio 15.9 , Visual Studio para Mac e Visual Studio Code.
Os contêineres do Docker estão disponíveis no microsoft / dotnet para o .NET Core e o ASP.NET Core.
As informações mais completas sobre esta versão podem ser encontradas nas notas de versão do .NET Core 2.2 . Existem instruções adicionais, problemas conhecidos e maneiras de contorná-los. Informe-nos de quaisquer falhas encontradas neste documento nos comentários no dotnet / core # 2098 .
Compilação em camadas
A compilação multinível é um recurso que permite que o tempo de execução use o compilador JIT de maneira mais inteligente para obter melhor desempenho, tanto no estágio de inicialização do aplicativo quanto no estágio de maximização do desempenho durante sua operação. A capacidade de fazer isso foi adicionada como um recurso opcional no .NET Core 2.1 e subseqüentemente ativada por padrão no .NET Core 2.2 Preview 2. Pensamos e decidimos que ainda não tínhamos certeza da importância de sua inclusão na versão final do .NET Core 2.2. tornou opcional, assim como no .NET Core 2.1. No entanto, no .NET Core 3.0, vamos mudar completamente para ele.
Eventos de tempo de execução
Geralmente, faz sentido monitorar os serviços de tempo de execução, por exemplo, GC, JIT ou ThreadPool do processo atual, para entender como esses serviços se comportam durante a vida útil do aplicativo. Nos sistemas Windows, isso geralmente é feito usando ETW e monitorando eventos ETW para o processo atual. Esse método ainda funciona muito bem, mas o uso do ETW nem sempre é possível e, quando possível, pode ser difícil. Por exemplo, você está executando em um ambiente com privilégios insuficientes ou no Linux / macOS.
A partir do .NET Core 2.2, os eventos CoreCLR podem ser manipulados pela classe EventListener
. Esses eventos descrevem o comportamento do GC, JIT, ThreadPool e interope. Esses são os mesmos eventos que agora estão disponíveis como parte do provedor CoreCLR ETW para Windows. Essa abordagem permite que os aplicativos processem eventos ou usem mecanismos de transporte para enviar eventos ao serviço de agregação de telemetria.
É assim que você pode se inscrever em eventos:
internal sealed class SimpleEventListener : EventListener {
Suporte do AccessToken no SqlConnection
O provedor ADO.NET para SQL Server, SqlClient, agora oferece suporte à configuração da propriedade AccessToken, que permite a autenticação de conexões com o SQL Server usando o Azure Active Directory. Para começar a usar esse recurso, você precisa obter o token de acesso usando a Biblioteca de Autenticação do Active Directory para .NET, que vem com o pacote NuGet do Microsoft.IdentityModel.Clients.ActiveDirectory.
Veja como autenticar conexões com o SQL Server usando o Azure AD:
Para obter mais informações, consulte o ADAL.NET e a documentação do Azure Active Directory .
Executando código antes de Main
O .NET Core agora permite incorporar código antes de iniciar o método principal, e isso é feito usando o Gancho de Inicialização. Esses ganchos permitem que o host personalize o comportamento do aplicativo após sua implantação, sem precisar reconstruir ou modificar o código.
Aqui, queremos dizer que os provedores de hospedagem criarão suas próprias configurações e políticas, incluindo configurações que podem afetar o comportamento de carregamento do ponto de entrada principal do aplicativo, por exemplo, AssemblyLoadContext. O gancho pode ser usado para configurar o rastreamento ou implementar telemetria, conectar retornos de chamada ou qualquer outra configuração de comportamento específica para um ambiente de tempo de execução específico. Os ganchos são uma entidade completamente separada em relação ao ponto de entrada e, portanto, não exigem alteração do código do aplicativo.
Uma descrição mais detalhada está na documentação .
Windows ARM32
Estamos adicionando suporte ao Windows ARM32, semelhante ao que já existe para o Linux ARM32, começando com o .NET Core 2.1. O Windows oferece suporte ao WIN32 há algum tempo, graças ao Windows IoT Core . Como parte da versão do Windows Server 2019, o suporte ao ARM32 foi adicionado ao Nanoserver. O .NET Core agora pode ser usado no Nanoserver e no IoT Core.
Os contêineres do docker Nanoserver para ARM32, como sempre, aparecerão no microsoft / dotnet no Docker Hub.
Gostaríamos de publicar assemblies do .NET Core para Windows ARM32 hoje, mas encontramos um bug tardio que torna a publicação inútil. Esperamos que os assemblies apareçam para o .NET Core 2.2.1 em janeiro de 2019.
O .NET Core 2.2 é suportado nos seguintes sistemas operacionais:
- Cliente Windows: 7, 8.1, 10 (1607+)
- Windows Server: 2008 R2 SP1 +
- macOS: 10.12+
- RHEL: 6+
- Fedora: 26+
- Ubuntu: 16.04+
- Debian: 9+
- SLES: 12+
- openSUSE: 42.3+
- Alpino: 3.7+
Plataformas de hardware suportadas:
- x64 - Windows, macOS e Linux
- x86 - Windows
- ARM32 - Linux (Ubuntu 16.04+, Debian 9+)
- ARM32 - Windows (1809+; disponível em janeiro)
Conclusão
O .NET Core 2.2 é uma versão que apresenta os principais aprimoramentos da plataforma. É altamente recomendável que você experimente e nos diga o que pensa sobre isso. Além disso, faz sentido entender as melhorias no ASP.NET Core 2.2 e no Entity Framework 2.2.
Não se esqueça que os ingressos para DotNext a partir de 1º de janeiro aumentarão de preço. Pessoal - para mil, e Standard - para dois mil. Detalhes sobre Early Bird estão no site .