Start Debugging

Тег: native-aot

14 статей · Страница1из2

Как заменить new Regex(...) на генератор исходного кода [GeneratedRegex] в .NET 11
Полное руководство по переходу с new Regex(pattern, RegexOptions.Compiled) на [GeneratedRegex] в .NET 11: механическая переработка кода, частичные методы против частичных свойств, измеренные показатели запуска и пропускной способности, диагностики SYSLIB1040-1045 и два случая, когда генератор молча откатывается к закешированному Regex.
WebApplication.CreateBuilder vs CreateSlimBuilder vs CreateEmptyBuilder в ASP.NET Core 11
Используйте CreateBuilder для обычного приложения, CreateSlimBuilder, когда публикуете с обрезкой или Native AOT за TLS-прокси, и CreateEmptyBuilder только тогда, когда хотите зарегистрировать все сервисы сами. Вот матрица возможностей и подводные камни, которые определяют выбор.
Что такое trim-safe код и как его писать?
Trim-safe код -- это код, который триммер .NET может статически доказать как достижимый, поэтому он выживает при удалении неиспользуемого кода из self-contained приложения. Это практическое руководство: включите анализатор, доведите каждое предупреждение IL2xxx до нуля, аннотируйте рефлексию с помощью DynamicallyAccessedMembers, распространите RequiresUnreferencedCode на публичные API и замените неанализируемые паттерны генераторами исходного кода.
Что такое атрибут DynamicallyAccessedMembers?
DynamicallyAccessedMembers сообщает триммеру .NET и AOT-компилятору, к каким членам типа Type вы обращаетесь через рефлексию, чтобы они были сохранены, а не удалены при тримминге. Он превращает молчаливое исключение MissingMethodException во время выполнения в предупреждение IL2070 на этапе сборки. Вот что делает этот атрибут, как работает лежащий в его основе анализ потока данных и как правильно аннотировать параметры, поля и параметры обобщённых типов.
Что такое Native AOT и чего он вам стоит?
Native AOT компилирует ваше .NET-приложение в единый автономный нативный бинарь без JIT, обеспечивая быстрый запуск и небольшое потребление памяти. Цена этого: цепочка инструментов C на этапе компиляции, более медленные публикации, сборки под каждый RID, отсутствие рефлексии и Reflection.Emit, обязательный тримминг и отсутствие Dynamic PGO. Вот полный баланс.
Native AOT против ReadyToRun против JIT в .NET 11: что выбрать для поставки?
Классический JIT с Dynamic PGO выигрывает по пропускной способности в установившемся режиме, ReadyToRun ускоряет запуск без изменений кода, а Native AOT даёт самый маленький и быстро стартующий бинарник ценой рефлексии и динамического кода. Выбирайте по форме развёртывания, а не по изолированным бенчмаркам.
2026-05-10 errorscsharpdotnet
Fix: PlatformNotSupportedException: Operation is not supported on this platform в Native AOT
Native AOT убирает JIT и интерпретатор, поэтому reflection emit, компиляция деревьев выражений и невиденные MakeGenericType бросают во время выполнения. Найдите вызов через IL3050 и замените его на генератор исходного кода или заранее подготовленный путь.
Как сократить время холодного старта AWS Lambda на .NET 11
Практичный, привязанный к версиям сценарий сокращения холодного старта Lambda на .NET 11. Покрывает Native AOT на provided.al2023, ReadyToRun, SnapStart на управляемом runtime dotnet10, тюнинг памяти, переиспользование статических полей, безопасность trim и как реально читать INIT_DURATION.
Вперёд