Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В ASP.NET Core доступен собственный собственный код .NET (AOT).
Замечание
Минимальные API несовместимы с собственным AOT.
Дополнительные сведения см. в родном развертывании AOT, в том числе:
Предпосылки
В Linux см. предварительные требования для нативного развёртывания AOT.
Visual Studio 2022 с установленным компонентом Разработка рабочего стола с C++.
Замечание
Visual Studio 2022 требуется, так как для Native 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
Убедитесь, что приложение можно выпустить с использованием Native 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. При запуске оно ведет себя так же, как и приложение, запущенное в Development среде. Запустите приложение 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, в настоящее время имеют некоторые проблемы совместимости при использовании в проекте, нацеленном на Native AOT, например:
- Использование отражения для проверки и обнаружения типов.
- Условная загрузка библиотек во время выполнения программы.
- Создание кода на лету для реализации функциональных возможностей.
Библиотеки, использующие эти динамические функции, необходимо обновить для работы с Native AOT. Их можно обновить с помощью таких средств, как генераторы источников Roslyn.
Авторам библиотек, которых призывают поддержать Native AOT, рекомендуется:
См. также
- поддержка ASP.NET Core для нативного AOT
- Нативное развертывание AOT
- Использование генератора источника источника привязки конфигурации
- Шаблон AOT-компиляции для Minimal API
-
WebApplication.CreateBuilderСравнение сCreateSlimBuilder - Изучение нового генератора исходного кода для Minimal API
- Замена вызовов методов перехватчиками
- Генератор источника привязки конфигурации