Start Debugging

Ежедневные заметки о .NET, C#, EF Core, MAUI, Blazor и Flutter для разработчиков, которые выпускают код.

2026-09-14 dapperdotnetcsharp
Dapper 2.1.86 возвращает DateOnly и TimeOnly спустя два года после их удаления
Dapper 2.1.86 снова включает встроенное сопоставление DateOnly и TimeOnly для параметров, членов и скалярных значений, с исправленными ошибками смещения столбца и тихого default(T). Что изменилось, что я измерил и что это значит для ваших собственных обработчиков типов.
2026-09-14 errorsef-coreef-core-11
Исправление: Could not load file or assembly 'Microsoft.Data.SqlClient, Version=7.0.0.0' после обновления EF Core
EF Core 11 скомпилирован против Microsoft.Data.SqlClient 7.0.0.0, но при восстановлении пакетов или развёртывании победила копия 6.x. Удалите старую фиксацию версии SqlClient и заново разверните весь вывод сборки.
2026-09-14 dotnet-11dotnetcsharp
Как асинхронно создавать и распаковывать ZIP-файлы с помощью асинхронных API ZipArchive в .NET 11
Используйте ZipFile.CreateFromDirectoryAsync, ExtractToDirectoryAsync, ZipArchive.CreateAsync и ZipArchiveEntry.OpenAsync без скрытого синхронного ввода-вывода. Замеры на .NET 11 RC 1 и .NET 10.0.12, включая баг .NET 10, который до сих пор блокирует Kestrel.
2026-09-13 agent-frameworkdotnetai-agents
Agent Framework 1.21: LocalCodeAct больше не передает окружение хоста в Python, написанный моделью
Microsoft Agent Framework .NET 1.21.0 поставляет Microsoft.Agents.AI.LocalCodeAct 1.21.0-preview.260911.1, в котором Python-подпроцесс CodeAct больше не наследует окружение родительского процесса, когда Environment равен null. В 1.20 сгенерированный код мог прочитать любую переменную хоста, включая API-ключи.
2026-09-13 aspnetcoreminimal-apisdotnet-11
Как привязать сложный объект из строки запроса с помощью [AsParameters] в minimal API в ASP.NET Core 11
Поставьте [AsParameters] на класс или record, чтобы привязать целый фильтр из строки запроса в minimal API в ASP.NET Core 11. Разбираем значения по умолчанию, массивы, перечисления, вложенные объекты, валидацию, OpenAPI и ошибку генератора Native AOT с позиционными record.
2026-09-13 dotnet-mauiandroidr8
Как включить сжатие и обфускацию R8 для релизной сборки .NET MAUI под Android
Установите AndroidLinkTool в r8, оставьте тримминг включённым и добавьте файл ProguardConfiguration. Почему .NET 10 и .NET 11 RC 1 всё ещё выпускают необфусцированный Java-код, как это меняет новое свойство AndroidR8ObfuscationMode и как проверить, что R8 действительно запустился.
2026-09-13 dotnet-mauiandroidmaui-shell
Как перехватить кнопку "Назад" в Android на корневой странице .NET MAUI Shell
Переопределите OnBackButtonPressed на корневой странице и используйте .NET MAUI 10.0.101 или новее. Почему корневые страницы перестали получать нажатия "Назад" начиная с 10.0.70 (Android 16) и 10.0.100 (все версии Android), почему .NET 11 RC 1 всё ещё затронут, почему Shell.OnNavigating и BackButtonBehavior.Command не помогают, и обходной путь через MainActivity для сломанных версий.
2026-09-12 dotnet-11containerssdk
.NET 11 RC 1 делает образы контейнеров из dotnet publish воспроизводимыми
SDK .NET 11 RC 1 учитывает SOURCE_DATE_EPOCH при публикации образов контейнеров, убирает идентификатор процесса из tar-заголовков слоёв и пропускает загрузку blob-объектов, если манифест уже есть в реестре. Один и тот же коммит на входе, один и тот же digest на выходе.
2026-09-12 ef-coreef-core-11dotnet-11
Как экранировать подстановочные символы % и _ в запросах с EF.Functions.Like и StartsWith в EF Core 11
StartsWith, EndsWith и Contains в EF Core 11 уже сами экранируют % и _, а EF.Functions.Like этого не делает. Разбираем SQL, который генерирует EF, переиспользуемый помощник для экранирования и перегрузку с escapeCharacter, благодаря которой всё работает в SQL Server, SQLite и PostgreSQL.
2026-09-12 comparisoncsharpdotnet
Lookup<TKey, TElement> или Dictionary<TKey, List<TValue>> для повторяющихся ключей в C#
Используйте ToLookup, когда группировка строится один раз и дальше только читается: она неизменяема, для отсутствующего ключа возвращает пустую последовательность, принимает ключ null и сохраняет порядок первого появления. Используйте Dictionary<TKey, List<TValue>>, когда группы меняются после создания или проходят через границу JSON.
Страница 1 из 74