Start Debugging

Тег: csharp

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

Volatile.Read и Volatile.ReadBarrier в .NET 10
Volatile.Read выполняет чтение одной ячейки с семантикой acquire. Volatile.ReadBarrier, новый в .NET 10, это барьер, который придаёт семантику acquire всем предшествующим чтениям. Используйте Volatile.Read для флагов и опубликованных ссылок, а ReadBarrier, когда нужно, чтобы пачка обычных или неатомарных чтений завершилась до следующего обращения к памяти, как в seqlock.
Исправление: значки строки состояния Android нечитаемы после включения UseMaterial3 в .NET MAUI 10
MAUI 10.0.100 выбирает цвет значков строки состояния по colorPrimary, а его яркость противоположна яркости поверхности Material 3, поэтому получается белое на белом или чёрное на чёрном. Обновите Microsoft.Maui.Controls до 10.0.101 или новее либо сбросьте AppearanceLightStatusBars в MainActivity.
Исправление: .NET MAUI Entry с Keyboard.Numeric показывает маленькую цифровую панель, а затем полную клавиатуру на iPadOS 26
В iPadOS 26 MAUI сопоставляет Keyboard.Numeric с UIKeyboardType.DecimalPad, который теперь открывается как плавающая мини-панель с цифрами. Добавьте маппер, переключающий iPad на NumbersAndPunctuation, и проверяйте ввод самостоятельно.
Quartz.NET 4.2 превращает некорректные cron-выражения в ошибки сборки
Quartz.NET 4.2.0 поставляется с анализатором Roslyn, который отклоняет непарсящиеся cron-литералы как QZ0001 на этапе компиляции, а также с генератором исходного кода, который превращает атрибуты [QuartzJob] и [CronTrigger] в регистрацию AddDeclaredJobs(). Разбираем, что он проверяет, как выглядит сгенерированный код и как от этого отказаться.
Исправление: MediaPicker.CapturePhotoAsync возвращает PNG вместо JPEG в .NET MAUI 10
На iOS MAUI 10 перекодирует снимки с камеры в PNG, если CompressionQuality равно 90 или выше и не задан MaximumWidth/Height, что включает значение по умолчанию. Установите CompressionQuality на 89 или ниже либо добавьте MaximumWidth только для iOS.
Microsoft.Extensions.AI.OpenAI 10.10.1 исправляет TypeLoadException с OpenAI 2.14
OpenAI 2.14.0 переименовал GlobalMcpToolCallApprovalPolicy, и из-за этого сломался каждый вызов Responses API с инструментами через Microsoft.Extensions.AI.OpenAI 10.10.0. Версия 10.10.1 переходит на OpenAI 2.14.0 и заодно получает исправление null-статуса reasoning для OpenAI-совместимых эндпоинтов.
Refit 16.1 сам пишет цикл пагинации: PagedEnumerable, [Paged] и [PageToken]
Refit 16.1.0 позволяет методу интерфейса возвращать PagedEnumerable<TPage, TItem>, а генератор исходного кода создает цикл с запросом на каждую страницу для курсоров, смещений, заголовков ответа и ссылок на следующую страницу. Здесь показано, как объявить такой метод, как ведет себя перечисление и какую ошибку сборки RF013 вы получите за опечатку в имени члена.
Как сериализовать публичные поля, такие как Vector3 и Quaternion, с помощью System.Text.Json
System.Text.Json записывает Vector3 как {}, а Quaternion как {"IsIdentity":false}, потому что эти типы хранят данные в публичных полях. Разбираем, как это исправляют IncludeFields, собственный конвертер, модификатор resolver и генерация исходного кода, с измерениями на .NET 10 и .NET 11 RC 1.
Назад Вперёд