Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
.NET native ahead-of-time (AOT) är tillgängligt i ASP.NET Core.
Anmärkning
Minimala API:er är inte kompatibla med inbyggd AOT.
Mer information finns i Ursprunglig AOT-distribution, inklusive:
Förutsättningar
I Linux läser du Krav för intern AOT-distribution.
Visual Studio 2022 med Skrivbordsutveckling med C++- arbetsbelastning installerad.
Anmärkning
Visual Studio 2022 krävs eftersom Native AOT kräver link.exe och Visual C++ statiska runtime-bibliotek. Det finns inga planer på att stödja intern AOT utan Visual Studio.
Skapa en webbapp med intern AOT
Skapa en ASP.NET Core API-app som är konfigurerad för att fungera med intern AOT:
Kör följande kommandon:
dotnet new webapiaot -o MyFirstAotWebApi && cd MyFirstAotWebApi
Utdata som liknar följande exempel visas:
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.
Publicera den infödda AOT-appen
Kontrollera att appen kan publiceras med Native AOT:
dotnet publish
Kommandot dotnet publish:
- Kompilerar källfilerna.
- Genererar källkodsfiler som kompileras.
- Skickar genererade sammansättningar till en intern IL-kompilator. IL-kompilatorn producerar det ursprungliga körbara programmet. Den inhemska körbara filen innehåller den inhemska maskinkoden.
Utdata som liknar följande exempel visas:
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\
Utdata kan skilja sig från föregående exempel beroende på vilken version av .NET 8 som används, vilken katalog som används och andra faktorer.
Granska innehållet i utdatakatalogen:
dir bin\Release\net8.0\win-x64\publish
Utdata som liknar följande exempel visas:
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
Den körbara filen är fristående och kräver ingen .NET-runtime för att fungera. När den startas fungerar den på samma sätt som appen körs i utvecklingsmiljön. Kör AOT-appen:
.\bin\Release\net8.0\win-x64\publish\MyFirstAotWebApi.exe
Utdata som liknar följande exempel visas:
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
Bibliotek och egenkompilerad AOT
Många av de populära bibliotek som används i ASP.NET Core-projekt har för närvarande vissa kompatibilitetsproblem när de används i ett projekt som riktar sig till intern AOT, till exempel:
- Använd reflektion för att inspektera och identifiera typer.
- Villkorlig inläsning av bibliotek vid exekvering.
- Generera kod i farten för att implementera funktioner.
Bibliotek som använder dessa dynamiska funktioner måste uppdateras för att fungera med intern AOT. De kan uppdateras med hjälp av verktyg som Roslyn-källgeneratorer.
Biblioteksförfattare som hoppas kunna stödja native AOT uppmuntras att:
Se även
- ASP.NET Core-stöd för intern AOT
- Inbyggd AOT-utplacering
- Använda konfigurationsbindargeneratorn
- Den minimala API AOT-kompileringsmallen
-
jämföra
WebApplication.CreateBuildermedCreateSlimBuilder - Utforska den nya minimala API-källgeneratorn
- Ersätta metodanrop med Interceptors
- Generator för källkod som binder konfigurationer
ASP.NET Core