Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O .NET AOT nativo (compilação antecipada) está disponível no ASP.NET Core.
Observação
APIs mínimas não são compatíveis com a AOT nativa.
Para mais informações, consulte a implantação nativa do AOT, incluindo:
Pré-requisitos
No Linux, consulte Pré-requisitos para implantação do AOT nativo.
Visual Studio 2022 com o workload de desenvolvimento para desktop com C++ instalado.
Observação
O Visual Studio 2022 é necessário porque o AOT Nativo requer link.exe e as bibliotecas de runtime estático do Visual C++. Não há planos para dar suporte ao AOT nativo sem o Visual Studio.
Criar um aplicativo Web com a AOT nativa
Crie um aplicativo de API do ASP.NET Core configurado para funcionar com a AOT Nativa:
Execute os comandos a seguir:
dotnet new webapiaot -o MyFirstAotWebApi && cd MyFirstAotWebApi
Uma saída semelhante ao exemplo a seguir é exibida:
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.
Publicar o aplicativo AOT nativo
Verifique se o aplicativo pode ser publicado usando a AOT Nativa:
dotnet publish
O comando dotnet publish:
- Compila os arquivos de origem.
- Gera arquivos de código-fonte compilados.
- Passa assemblies gerados para um compilador IL nativo. O compilador de IL produz o executável nativo. O executável nativo contém o código do computador nativo.
Uma saída semelhante ao exemplo a seguir é exibida:
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\
A saída pode ser diferente do exemplo anterior, dependendo da versão do .NET 8 usada, do diretório usado e de outros fatores.
Examine o conteúdo do diretório de saída:
dir bin\Release\net8.0\win-x64\publish
Uma saída semelhante ao exemplo a seguir é exibida:
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
O executável é independente e não requer um tempo de execução do .NET para ser executado. Quando iniciado, ele se comporta da mesma forma que o aplicativo executado no Development ambiente. Execute o aplicativo AOT:
.\bin\Release\net8.0\win-x64\publish\MyFirstAotWebApi.exe
Uma saída semelhante ao exemplo a seguir é exibida:
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
Bibliotecas e AOT nativo
Muitas das bibliotecas populares usadas em projetos do ASP.NET Core atualmente têm alguns problemas de compatibilidade quando usadas em um projeto voltado para o AOT Nativo, como:
- Uso de reflexão para inspecionar e descobrir tipos.
- Carregamento condicional de bibliotecas em runtime.
- Geração de código em tempo real para implementar a funcionalidade.
As bibliotecas que usam esses recursos dinâmicos precisam ser atualizadas para funcionar com o AOT Nativo. Elas podem ser atualizadas usando ferramentas como geradores de origem Roslyn.
Os autores da biblioteca que desejam dar suporte ao AOT nativo são incentivados a:
Consulte também
- suporte do ASP.NET Core para AOT Nativo
- Implantação do AOT nativo
- Como usar o gerador de origem do associador de configuração
- O modelo de compilação da API mínima AOT
-
Comparação entre
WebApplication.CreateBuildereCreateSlimBuilder - Explorando o novo gerador de origem de API Mínima
- Como substituir chamadas de método por interceptores
- Gerador de origem para configuração da associação