Руководство. Публикация приложения ASP.NET Core с помощью Native AOT
ASP.NET Core 8.0 предоставляет поддержку .NET native перед временем (AOT).
Примечание.
- Функция AOT в собственном коде в настоящее время доступна в предварительной версии.
- В .NET 8 не все функции ASP.NET Core совместимы с машинным AOT.
- Вкладки предоставляются для инструкций .NET CLI и Visual Studio :
- Visual Studio является обязательным условием, даже если выбрана вкладка CLI.
- Интерфейс командной строки должен использоваться для публикации, даже если выбрана вкладка Visual Studio.
Необходимые компоненты
В Linux см . предварительные требования для развертывания AOT в машинном коде.
Предварительная версия Visual Studio 2022 с установленной рабочей нагрузкой C++ .
Примечание.
Требуется предварительная версия Visual Studio 2022, так как для машинного AOT требуется link.exe и статические библиотеки среды выполнения Visual C++. Нет планов поддержки собственного AOT без Visual Studio.
Создание веб-приложения с помощью собственного AOT
Создайте приложение API ASP.NET Core, настроенное для работы с Машинным AOT:
Выполните следующие команды:
dotnet new webapiaot -o MyFirstAotWebApi && cd MyFirstAotWebApi
Выходные данные, аналогичные следующему примеру, отображаются:
The template "ASP.NET Core Web API (Native AOT)" was created successfully.
Processing post-creation actions...
Restoring C:\Code\Demos\MyFirstAotWebApi\MyFirstAotWebApi.csproj:
Determining projects to restore...
Restored C:\Code\Demos\MyFirstAotWebApi\MyFirstAotWebApi.csproj (in 302 ms).
Restore succeeded.
Публикация собственного приложения AOT
Убедитесь, что приложение можно опубликовать с помощью Собственного AOT:
dotnet publish
Команда dotnet publish
делает следующее:
- Компилирует исходные файлы.
- Создает скомпилированные файлы исходного кода.
- Передает созданные сборки в собственный компилятор IL. Компилятор IL создает собственный исполняемый файл. Собственный исполняемый файл содержит машинный код.
Выходные данные, аналогичные следующему примеру, отображаются:
MSBuild version 17.<version> for .NET
Determining projects to restore...
Restored C:\Code\Demos\MyFirstAotWebApi\MyFirstAotWebApi.csproj (in 241 ms).
C:\Code\dotnet\aspnetcore\.dotnet\sdk\8.0.<version>\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIde
ntifierInference.targets(287,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotne
t-support-policy [C:\Code\Demos\MyFirstAotWebApi\MyFirstAotWebApi.csproj]
MyFirstAotWebApi -> C:\Code\Demos\MyFirstAotWebApi\bin\Release\net8.0\win-x64\MyFirstAotWebApi.dll
Generating native code
MyFirstAotWebApi -> C:\Code\Demos\MyFirstAotWebApi\bin\Release\net8.0\win-x64\publish\
Выходные данные могут отличаться от предыдущего примера в зависимости от используемой версии .NET 8, используемой каталога и других факторов.
Просмотрите содержимое выходного каталога:
dir bin\Release\net8.0\win-x64\publish
Выходные данные, аналогичные следующему примеру, отображаются:
Directory: C:\Code\Demos\MyFirstAotWebApi\bin\Release\net8.0\win-x64\publish
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 30/03/2023 1:41 PM 9480704 MyFirstAotWebApi.exe
-a--- 30/03/2023 1:41 PM 43044864 MyFirstAotWebApi.pdb
Исполняемый файл является автономным и не требует выполнения среды выполнения .NET. При запуске приложение работает так же, как и в среде разработки. Запустите приложение AOT:
.\bin\Release\net8.0\win-x64\publish\MyFirstAotWebApi.exe
Выходные данные, аналогичные следующему примеру, отображаются:
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5000
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\Code\Demos\MyFirstAotWebApi
Библиотеки и собственный AOT
Многие популярные библиотеки, используемые в проектах ASP.NET Core, в настоящее время имеют некоторые проблемы совместимости при использовании в проекте, предназначенных для собственного AOT, например:
- Использование отражения для проверки и обнаружения типов.
- Условное загрузка библиотек во время выполнения.
- Создание кода на лету для реализации функциональных возможностей.
Библиотеки, использующие эти динамические функции, необходимо обновить для работы с машинным AOT. Их можно обновить с помощью таких средств, как генераторы источников Roslyn.
Авторы библиотеки, надеясь поддержать Собственный AOT, рекомендуется:
- Ознакомьтесь с требованиями к совместимости AOT в машинном коде.
- Подготовьте библиотеку для обрезки.
См. также
- поддержка ASP.NET Core для машинного AOT
- Развертывание AOT в собственном коде
- Использование генератора источника источника привязки конфигурации
- Минимальный шаблон компиляции AOT API
WebApplication.CreateBuilder
Сравнение сCreateSlimBuilder
- Изучение нового генератора источников API с минимальным количеством
- Замена вызовов методов перехватчиками
- Генератор источника привязки конфигурации
ASP.NET Core