Start Debugging

Тег: csharp

341 статей · Страница5из35

MessagePack 3.1.9 и 2.5.303 исправляют payload на 32 КиБ, который выделяет 120 МиБ
CVE-2026-92707: заголовки вложенных массивов MessagePack могли переиспользовать одни и те же оставшиеся байты, чтобы пройти проверку длины, поэтому десериализация в object выделяла в тысячи раз больше памяти, чем размер payload. Разбираем исправление, пробу до/после и почему приложениям SignalR на .NET 8-11 RC 1 нужен прямой пин пакета.
Polly 8.8 перезагружает resilience-конвейер из вашего собственного IOptionsMonitor
В Polly 8.8.0 появился EnableReloadsWithMonitor, и resilience-конвейер теперь может перезагружаться на лету из feature flag или монитора удалённой конфигурации, не зарегистрированного в DI. Тестовый прогон показывает пересборку, а заодно одну ловушку: context.GetOptions по-прежнему читает монитор из DI и возвращает значения по умолчанию.
2026-09-17 mstesttestingcsharp
MSTest 4.4.1 исправляет неоднозначные вызовы Assert с CS0121, которые 4.4.0 сломал ниже C# 14
MSTest 4.4.0 добавил перегрузки Span<T> и ReadOnlySpan<T> в Assert.Contains и Assert.DoesNotContain, из-за чего обычные проверки массивов и строк стали падать с CS0121 на net8.0, net9.0 и в любом проекте ниже C# 14. MSTest 4.4.1, опубликованный 2026-09-16, добавляет точные перегрузки для массивов и ограниченные перенаправляющие перегрузки. Две формы вызова с явным обобщённым аргументом по-прежнему не компилируются.
Process.Run vs Process.Start в .NET 11: что выбрать?
Используйте Process.Run, когда запускаете инструмент и вас интересует только то, как он завершился: один вызов, тайм-аут, который убивает дочерний процесс, и ProcessExitStatus с сигналом. Оставьте Process.Start, когда нужен объект Process: запись в stdin, чтение вывода по мере поступления, UseShellExecute или завершение всего дерева процессов.
2026-09-16 dotnetdotnet-11jit
JIT в .NET 11 девиртуализирует обобщённые виртуальные методы, и вместе с ними исчезает выделение памяти
В статье Стивена Тоуба Performance Improvements in .NET 11 вызовы обобщённых виртуальных методов падают с 6.7 нс и 24 байт до 1.8 нс и нуля выделений. Три пул-реквеста в RyuJIT открыли инлайнинг для самой непрозрачной диспетчеризации в .NET.
Исправление: UIKitThreadAccessException в MediaPicker.PickPhotosAsync при выборе нескольких фотографий в .NET MAUI iOS
Выбор 2 и более фотографий в iOS вызывает UIKitThreadAccessException в MAUI 10.0.100 и 10.0.101. MAUI читает PHPickerResult.ItemProvider после await, вне главного потока. Зафиксируйте 10.0.90, обновитесь до 10.0.110 или вызовите PHPicker сами.
Исправление: конечные точки API в ASP.NET Core возвращают 401 вместо перенаправления на страницу входа после обновления до .NET 10
В .NET 10 аутентификация через cookie отвечает API-подобным конечным точкам кодом 401/403 вместо перенаправления на страницу входа. Верните прежнее поведение для отдельной конечной точки, глобально или с помощью переключателя AppContext.
Microsoft.Extensions.AI 10.10 проваливает метрики оценки, которым судья не выставил балл
Microsoft.Extensions.AI.Evaluation.Quality 10.10.0 теперь помечает нераспознанные и выходящие за диапазон оценки качества как проваленные, а Microsoft.Extensions.AI.OpenAI 10.10.0 удаляет адаптер Assistants. Измерено до и после на 10.9.0.
2026-09-14 dapperdotnetcsharp
Dapper 2.1.86 возвращает DateOnly и TimeOnly спустя два года после их удаления
Dapper 2.1.86 снова включает встроенное сопоставление DateOnly и TimeOnly для параметров, членов и скалярных значений, с исправленными ошибками смещения столбца и тихого default(T). Что изменилось, что я измерил и что это значит для ваших собственных обработчиков типов.
Назад Вперёд