Start Debugging

Тег: dotnet

391 статей · Страница6из40

Framework-dependent vs self-contained vs Native AOT для контейнерного образа .NET 11
Framework-dependent на chiseled-образе aspnet - правильный вариант по умолчанию для сервиса ASP.NET Core на .NET 11, потому что слой среды выполнения общий для всех сервисов, а CVE в среде выполнения закрывается сменой базового образа. Self-contained с trimming и Native AOT дают образ в 2-5 раз меньше и заметно более быстрый холодный старт, и стоят вам именно этого. Реальные опубликованные размеры, арифметика общих слоёв и ошибка вывода базового образа в .NET 11, ломающая путь AOT.
Возврат Task напрямую против проброса через async/await в методе репозитория на C#: что выбрать?
Отказ от async/await в пробрасывающем методе репозитория экономит около 6 нс и 72 байта, а стоит вам кадра стека, семантики try/catch и безопасного освобождения ресурсов. Оставляйте return await, если метод не является чистым пробросом на измеренном горячем пути.
AutoMapper против Mapperly и написанного вручную маппинга в 2026 году
Mapperly - выбор по умолчанию для нового кода .NET: он не уступает по скорости ручному маппингу, переживает Native AOT и находит незамапленные члены во время компиляции. AutoMapper по-прежнему выигрывает в ProjectTo. С бенчмарками и лицензионными порогами.
2026-08-29 errorsmauidotnet
Fix: Doesn't support required ABI при установке приложения .NET MAUI для Android
В APK нет нативной библиотеки под процессор устройства. Начиная с .NET 9 значения RuntimeIdentifiers для Android по умолчанию только 64-битные, поэтому решение состоит в том, чтобы задать RuntimeIdentifiers явно. Разбираются ADB0020, XA0036, NETSDK1083, соответствие ABI и RID, формулировка в Play Console и почему фрагмент с четырьмя RID, который все копируют, ломается на .NET 11.
Aspire 13.5 добавляет полноценный терминал прямо в дашборд
WithTerminal() даёт ресурсу интерактивную PTY-сессию, в которую можно печатать из дашборда или подключиться из собственной оболочки. Она экспериментальная, отцепляет отладчик, а опции Shell, под которую вы могли писать код, больше нет.
Перевод решения .NET на Central Package Management с Directory.Packages.props
Перенесите все версии пакетов из файлов csproj в один Directory.Packages.props. Разбираем скрипт-генератор, который сводит конфликтующие версии с настоящей semver-сортировкой, diff графа зависимостей до и после, доказывающий, что именно изменилось, NU1008/NU1010/NU1013/NU1507, транзитивное закрепление, GlobalPackageReference, VersionOverride и почему вложенный Directory.Packages.props незаметно перекрывает корневой.
Как отрендерить заголовок, уровень которого (h1-h6) выбирается во время выполнения, в компоненте Blazor
В Razor нет синтаксиса для переменного имени тега, а DynamicComponent рендерит только типы компонентов. Переопределите BuildRenderTree и вызовите builder.OpenElement(0, $"h{level}"). Разбираются проброс атрибутов, почему имя тега нужно ограничивать до того, как оно попадёт в DOM, почему смена уровня вырывает элемент из DOM даже с @key, и вариант с автоматическим уровнем на каскадном значении.
Назад Вперёд