Start Debugging

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

2026-10-25 aspiredotnetci
Aspire 13.6.4 восстанавливает вызовы создания DCP, завершившиеся по таймауту, вместо того чтобы переводить ресурс в состояние сбоя
Aspire 13.6.4 больше не отправляет ресурс в FailedToStart из-за одного вызова создания DCP, завершившегося по таймауту или с HTTP 504, и открывает три таймаута DcpPublisher, которые можно увеличить на медленных CI-раннерах.
2026-10-25 flutterdartios
Как заблокировать ориентацию экрана для одного экрана во Flutter (и почему многозадачность на iPad её игнорирует)
Как зафиксировать один маршрут Flutter в альбомной или портретной ориентации через SystemChrome.setPreferredOrientations, не ломая остальное приложение: блокировка на основе стека, которая переживает pushReplacement и восстанавливается при pop, почему пустой список не годится для сброса, почему многозадачность iPad и большие экраны Android 16 игнорируют блокировку и что означает UIRequiresFullScreen после iPadOS 26 и iOS 27 SDK. Проверено на Flutter 3.47.8 с Dart 3.13.7 и Xcode 27.1.
2026-10-25 dartfluttercollections
Как удалять элементы из List в Dart во время обхода без ConcurrentModificationError
Вызов remove внутри цикла for-in или forEach выбрасывает ConcurrentModificationError. Используйте removeWhere для фильтрации на месте, создайте новый список через where или collection-for либо обходите индексы в обратном порядке. Проверено на Dart 3.13.7, с бенчмарком, который показывает, почему removeAt в цикле работает медленно.
2026-10-25 dartflutterjson
Как сериализовать и десериализовать иерархию sealed-классов Dart в JSON и обратно
Поместите в JSON поле-дискриминатор, переключайтесь по нему в фабрике на sealed-базе и переключайтесь по подтипу, чтобы записать объект обратно. Три рабочие версии на Dart 3.13.7: ручное сопоставление с образцом, json_serializable 6.15.2 и Freezed 4.0.3 с unionKey и fallbackUnion, а также подводные камни каждой из них.
2026-10-24 agent-frameworkag-uidotnet
Agent Framework 1.26: конечные точки AG-UI больше не превращают scoped-агентов в синглтоны
Microsoft Agent Framework 1.26.0 заставляет MapAGUIServer разрешать keyed AIAgent, его AgentSessionStore и провайдер ключа изоляции на каждый запрос, а также добавляет перегрузку с селектором, который выбирает агента по HttpContext.
2026-10-24 ef-coreef-core-11dotnet-11
Как настроить самоссылающуюся связь многие-ко-многим (подписчики и подписки) в EF Core
Моделируем подписчиков и подписки на одной сущности User в EF Core 11: что строит конвенция, почему SQL Server молча превращает один внешний ключ соединительной таблицы в ClientCascade, как сопоставить явную сущность Follow с временной меткой и как удалить пользователя без ошибок 547 и 1785.
2026-10-24 dartflutterlints
Что такое линт depend_on_referenced_packages в Dart и почему он срабатывает на транзитивные импорты
depend_on_referenced_packages срабатывает, когда файл импортирует или экспортирует пакет, которого нет в вашем собственном pubspec.yaml, даже если он подтягивается через другую зависимость. Что именно проверяет это правило на Dart 3.12.2 и Flutter 3.44.8, почему транзитивные импорты это настоящая ошибка и как исправить каждый вариант.
2026-10-23 migrationflutterdart
Миграция Flutter-приложения с Color.withOpacity на Color.withValues (Flutter 3.27+)
Замените устаревшие Color.withOpacity, opacity, value, red, green, blue и alpha на withValues, .a/.r/.g/.b и toARGB32. Что dart fix перепишет за вас, четыре геттера, которые он оставляет, почему после замены ломаются точные проверки цветов и поиск в Map<Color, T> и как withOpacity молча теряет Display P3. Измерено на Flutter 3.44.8 с Dart 3.12.2.
2026-10-23 migrationflutterdart
Миграция Flutter-приложения с WidgetsBindingObserver.didChangeAppLifecycleState на AppLifecycleListener (Flutter 3.13+)
Замените самописный код жизненного цикла на WidgetsBindingObserver на AppLifecycleListener: соответствие колбэков, конечный автомат, который он навязывает, новое состояние hidden, ломающее исчерпывающие switch, запросы на выход на десктопе и тест, который внезапно падает на assert. Проверено на Flutter 3.44.8 и Dart 3.12.2.
2026-10-23 dotnetplaywrighttesting
Playwright .NET 1.64 добавляет Locator.Within(), и это цепочка Locator, прочитанная задом наперёд
Microsoft.Playwright 1.64 добавляет Locator.Within(), чтобы можно было написать 'эта кнопка внутри того диалога'. Быстрая проверка показывает, что он строит ровно тот же локатор, что и parent.Locator(child), включая разрешение Nth() для каждого родителя.
Страница 1 из 89