Start Debugging

Блог

Страница 11 из 91

2026-10-03 csharpdotnetasync

Как синхронно дождаться ValueTask в неасинхронном методе без выделения памяти

Сначала проверьте IsCompleted и прочитайте результат через GetAwaiter().GetResult(): это стоит 0 байт. Блокируйтесь только если ValueTask ещё не завершён, и делайте это через кешированное событие и UnsafeOnCompleted вместо AsTask(), который выделяет от 72 до 208 байт на вызов. Измерено на .NET 10 и .NET 11 RC1.

Agent Framework 1.23: middleware функций наконец может подменить вызываемый инструмент

Microsoft Agent Framework .NET 1.23.0 учитывает присваивание FunctionInvocationContext.Function, поэтому middleware может перенаправить вызов инструмента на другую AIFunction. Новый хелпер WrapWithPendingMiddleware сохраняет участие остальной цепочки.

EF.Parameter или EF.Constant в запросах EF Core 11

EF.Constant встраивает захваченное значение в SQL как литерал, EF.Parameter превращает литерал в SQL-параметр. Оставляйте поведение EF Core по умолчанию, используйте EF.Parameter, чтобы динамически построенные деревья выражений не перекомпилировались при каждом вызове, а EF.Constant применяйте только для значений с небольшим набором вариантов и настолько перекошенными данными, что каждому нужен свой план.

Volatile.Read и Volatile.ReadBarrier в .NET 10

Volatile.Read выполняет чтение одной ячейки с семантикой acquire. Volatile.ReadBarrier, новый в .NET 10, это барьер, который придаёт семантику acquire всем предшествующим чтениям. Используйте Volatile.Read для флагов и опубликованных ссылок, а ReadBarrier, когда нужно, чтобы пачка обычных или неатомарных чтений завершилась до следующего обращения к памяти, как в seqlock.
2026-10-01 errorsdotnettesting

Исправление: dotnet test завершается с кодом 5 и "Zero tests ran" на Microsoft.Testing.Platform

Код выхода 5 означает, что MTP отклонил параметр командной строки, а не то, что тесты отсутствуют. Запустите исполняемый файл тестов напрямую, чтобы увидеть настоящую ошибку, затем добавьте пакет расширения или направьте параметр только в нужные проекты.

.NET MAUI 10.0.110 исправляет шесть утечек памяти, найденных агентным охотником за утечками

MAUI 10.0.110 содержит исправления шести утечек в BackButtonBehavior, SwipeItemView, ListView.RefreshCommand, IndicatorView, GeometryGroup и TableView. Большинство из них были заведены и исправлены рабочими процессами gh-aw, и они особенно важны, если вы используете RelayCommand из CommunityToolkit.Mvvm.

Панель мониторинга Aspire 13.6 хранит последние десять запусков в SQLite

Aspire 13.6.0 делает панель мониторинга постоянной: снимки ресурсов и телеметрия сохраняются в базе данных SQLite, AppHost хранит до десяти запусков на приложение, а завершённые запуски остаются доступны для просмотра в режиме только чтения. Как работают режимы Run, Resume и None и как настроить автономную панель.