﻿# \.NET Digest \#2

Добро пожаловать на второй выпуск нашего дайджеста, посвящённого новостям и событиям в мире \.NET\! Первый выпуск вам понравился, так что C\# команда PVS\-Studio снова собрала для вас самые интересные и полезные материалы\. Поехали\!

![1148_NET_digest_N2_ru/image1.png](https://import.viva64.com/docx/blog/1148_NET_digest_N2_ru/image1.png)

Мы стараемся совершенствоваться, так что будем рады вашим комментариям и предложениям :\)

Не стесняйтесь присылать нам интересные материалы с помощью [формы обратной связи](https://pvs-studio.ru/ru/about-feedback/?is_question_form_open=true)\!

Сегодня в дайджесте: \.NET 9 Preview 6, статьи про новые возможности языка, окончание поддержки \.NET 6 и многое другое\.

## Главные новости

[\.NET 9 Preview 6](https://devblogs.microsoft.com/dotnet/dotnet-9-preview-6/)\. Microsoft выпустили последнюю preview версию\. Следующим этапом должен стать Release Candidate 1\. Кратко перечислим основные изменения:

* Улучшения в _System\.Numerics_ и _System\.Text\.Json_;
* Атрибут _\[GeneratedRegex\]_ теперь можно применять к свойствам;
* Новые типы _OrderedDictionary<TKey, TValue\>_ и _ReadOnlySet<T\>_;
* _allows ref struct_ для ограничения обобщённого параметра, чтобы сообщить компилятору и рантайму, что в качестве обобщённого параметра может использоваться _ref struct_;
* NuGetAudit теперь выдаёт предупреждения об уязвимостях в транзитивных зависимостях;
* Новый инструмент _dotnet nuget why_ для выяснения того, зачем в проекте используется транзитивная зависимость;
* MSBuild BuildChecks для обнаружения проблем на этапе сборки\.

[\.NET 6 will reach End of Support on November 12, 2024](https://devblogs.microsoft.com/dotnet/dotnet-6-end-of-support/)\. Microsoft перестанет поддерживать \.NET 6\. Новые обновления безопасности больше не будут выходить\. Прекратится осуществление технической поддержки \.NET 6\. Также, при сборке вы будете получать предупреждение о неподдерживаемой версии\. Рекомендуется перейти на \.NET 8\.

![1148_NET_digest_N2_ru/image2.png](https://import.viva64.com/docx/blog/1148_NET_digest_N2_ru/image2.png)

## Видео

<https://www.youtube.com/watch?v=5KdICNWOfEQ&t=0s>

[A Complete \.NET Developer's Guide to Span with Stephen Toub](https://www.youtube.com/watch?v=5KdICNWOfEQ&t=0s)\. Большое видеоруководство про Span в \.NET от Стивена Тоуба\.

## Статьи

[\.NET and \.NET Framework July 2024 servicing releases updates](https://devblogs.microsoft.com/dotnet/dotnet-and-dotnet-framework-july-2024-servicing-updates/)\. Теперь новости об обновлении \.NET и \.NET Framework объединены в одну\. В июльском обновлении были исправлены различные уязвимости\.

[C\# 13: Explore the latest preview features](https://devblogs.microsoft.com/dotnet/csharp-13-explore-preview-features/)\. В этой статье Microsoft рассказывает о нововведениях C\# 13, доступных в последнем preview\. Это отличная возможность подробнее узнать про улучшения _params_ и _index_ операторa, новый _lock_ объект, _partial_ свойства, _allows ref struct_ и другое\.

Также разработчики сообщили, что типы расширений, которые должны были появиться в C\# 13 появятся только в C\# 14 \(\.NET 10\)\. Это печально, но, лучше так, чем получать сырую функцию\.

[What's new in \.NET Aspire 8\.1 for cloud native developers\!](https://devblogs.microsoft.com/dotnet/whats-new-in-aspire-8-1/) Новая версия \.NET Aspire 8\.1 привносит поддержку создания образов контейнеров через _AddDockerfile\(\.\.\.\)_, оркестрирование Python кодом с помощью _AddPythonProject\(\.\.\.\)_ и прочие улучшения для тестирования телеметрии\. Также были добавлены новые компоненты, такие как: Keycloak, Elasticsearch, Garnet, Valkey, Kafka UI и другие\.

Кстати, о Garnet\. Мы недавно выпускали [статью](https://pvs-studio.ru/ru/blog/posts/csharp/1124/) о проверке исходного кода Microsoft Garnet статическим анализатором PVS\-Studio\.

[Dive into native Windows development with new WinUI workload and template improvements](https://devblogs.microsoft.com/visualstudio/dive-into-native-windows-development-with-new-winui-workload-and-template-improvements/)\. Microsoft рекомендует использовать WinUI для разработки приложений на Windows\. Теперь же появились новые рабочие нагрузки и шаблоны для создания проектов\.

[Behind the scenes of collection expressions](https://andrewlock.net/series/behind-the-scenes-of-collection-expressions/)\. Эндрю Лок завершает серию статей, посвящённых выражениям коллекций\. Новые статьи: 

* [Exploring the generated code: T\[\], Span<T\>, and Immutable collections](https://andrewlock.net/behind-the-scenes-of-collection-expressions-part-3-arrays-span-of-t-and-immutable-collections/);
* [Exploring the generated code: the spread element](https://andrewlock.net/behind-the-scenes-of-collection-expressions-part-4-the-spread-element/);
* [Adding support for collection expressions to your own types](https://andrewlock.net/behind-the-scenes-of-collection-expressions-part-5-adding-support-for-collection-expressions-to-your-own-types/)\.

[Disambiguating types with the same name with extern alias](https://andrewlock.net/disambiguating-types-with-the-same-name-with-extern-alias/)\. Эндрю Лок рассматривает проблему использования двух библиотек, имеющих одинаковые имена типов и пространства имён\. Кейс очень редкий, но знать, как избежать ошибок компиляции и справиться с этой ситуацией будет полезно\.

[Cloned Dictionary vs\. Immutable Dictionary vs\. Frozen Dictionary in high traffic systems](https://ayende.com/blog/201314-B/cloned-dictionary-vs-immutable-dictionary-vs-frozen-dictionary-in-high-traffic-systems)\. Автор сравнивает эффективность различных реализаций словарей в условиях высокой нагрузки на систему\. Он рассказывает о том, какой тип словаря может быть неэффективным из\-за больших затрат на выделение памяти и какой работает медленно из\-за необходимости выделения памяти для каждой операции\.

[CREATING HASHES IN \.NET](https://damienbod.com/2024/07/01/creating-hashes-in-net/)\. В этой статье рассматриваются различные методы создания хэшей в \.NET\. Хэши полезны для одностороннего шифрования, которое используется для безопасного хранения паролей и других конфиденциальных данных\. Они также используются для проверки JWT и во многих других сценариях\.

[C\# Design Patterns \- Iterator \- Language Features](https://endjin.com/blog/2024/07/csharp-design-patterns-iterator-language-features)\. Автор описывает встроенную в C\# поддержку паттерна итераторов: _IEnumerator_, _IEnumerable_ и _IAsyncEnumerable_\.

[Why and How to Execute GraphQL Queries in \.NET](https://devblogs.microsoft.com/dotnet/why-and-how-to-execute-graph-ql-queries-in-dotnet/)\. В этом посте рассматривается, как выполнять запросы к GraphQL API в \.NET с использованием библиотеки Strawberry Shake в консольном приложении\.

[Adding Serilog to ASP\.NET Core: a practical guide](https://blog.postsharp.net/serilog-aspnetcore)\. Serilog — это библиотека для логирования\. Вы можете использовать её самостоятельно, но она также совместима с _Microsoft\.Extensions\.Logging_, что делает её хорошим выбором для ASP\.NET Core приложений\. Из этой статьи вы узнаете, почему стоит выбрать Serilog и как интегрировать его в свой проект на ASP\.NET Core\.

[ReadOnlySet<T\> in \.NET 9](https://steven-giesel.com/blogPost/f368c7d3-488e-4bea-92b4-abf176353fa3/readonlysett-in-net-9)\. В \.NET 9 preview 6 был представлен ReadOnlySet<T\>\. Здесь вы узнаете, как он работает и зачем был добавлен\.

[\.NET: итерируемую в foreach коллекцию изменять нельзя\. Или\.\.\.](https://habr.com/ru/articles/825556/) Статья посвящена неочевидной особенности, которая возникает при изменении некоторых коллекций в \.NET\. Оказывается, для некоторых методов поведение \.NET Framework и \.NET отличается\.

[Troubleshooting 6 Known Issues in \.NET MAUI](https://www.telerik.com/blogs/troubleshooting-6-known-issues-net-maui)\. Статья посвящена решению шести распространённых проблем в \.NET MAUI\. 

[MemoryCache in C\#: A Practical Guide](https://blog.postsharp.net/memorycache)\. _MemoryCache_ — это стандартный механизм кэширования в памяти для приложений, написанных на C\#\. Он помогает повысить производительность и масштабируемость системы за счёт увеличения объёма используемой памяти\. В этом гайде рассматривается, когда и как лучше всего использовать _MemoryCache_\.

## Новости

[Extend System\.Guid with a new creation API for v7](https://github.com/dotnet/runtime/issues/103658)\. Дискуссия, посвящённая поддержке UUIDv7 в \.NET 9\. Это привнесёт ряд преимуществ: улучшенная сортировка по времени, совместимость с другими системами и стандартами, высокая уникальность благодаря случайным и инкрементным данным, а также улучшенная производительность при генерации и использовании UUID\.

Спасибо за прочтение, и ждём вас снова\! Не стесняйтесь [присылать](https://pvs-studio.ru/ru/about-feedback/?is_question_form_open=true) нам свои новости\!