Tutoriel : Publier une application ASP.NET Core à l’aide d’AOT natif
ASP.NET Core 8.0 introduit la prise en charge pour l’avance de temps (AOT, ahead-of-time) native .NET.
Remarque
- La fonctionnalité AOT native est actuellement en préversion.
- Dans .NET 8, toutes les fonctionnalités ASP.NET Core ne sont pas compatibles avec Native AOT.
- Des onglets sont prévus pour les instructions .NET CLI et Visual Studio :
- Visual Studio est un prérequis même si l’onglet CLI est sélectionné.
- L’interface CLI doit être utilisée pour publier même si l’onglet Visual Studio est sélectionné.
Conditions préalables
Sur Linux, consultez Conditions préalables pour le déploiement AOT natif.
Visual Studio 2022 avec la charge de travail Développement Desktop en C++ installée.
Remarque
Visual Studio 2022 est requis, car AOT natif nécessite link.exe et les bibliothèques de runtime statique Visual C++. Il n'est pas prévu de prendre en charge Native AOT sans Visual Studio.
Créer une application web avec AOT natif
Créez une application API core ASP.NET configurée pour fonctionner avec Native AOT :
Exécutez les commandes suivantes :
dotnet new webapiaot -o MyFirstAotWebApi && cd MyFirstAotWebApi
La sortie similaire à l’exemple suivant s’affiche :
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.
Publier l’application AOT native
Vérifiez que l’application peut être publiée à l’aide d’AOT natif :
dotnet publish
Commande dotnet publish
:
- Compile les fichiers sources.
- Génère des fichiers de code source compilés.
- Transmet des assemblages générés à un compilateur IL natif. Le compilateur IL produit l’exécutable natif. L’exécutable natif contient le code de l’ordinateur natif.
La sortie similaire à l’exemple suivant s’affiche :
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\
La sortie peut différer de l’exemple précédent en fonction de la version de .NET 8 utilisée, du répertoire utilisé et d’autres facteurs.
Passez en revue le contenu du répertoire de sortie :
dir bin\Release\net8.0\win-x64\publish
La sortie similaire à l’exemple suivant s’affiche :
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
L’exécutable est autonome et ne nécessite pas d’exécution d’un runtime .NET. Lors du lancement, il se comporte de la même façon que l’application exécutée dans l’environnement de développement. Exécutez l’application AOT :
.\bin\Release\net8.0\win-x64\publish\MyFirstAotWebApi.exe
La sortie similaire à l’exemple suivant s’affiche :
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
Bibliothèques et AOT native
La plupart des bibliothèques populaires utilisées dans les projets ASP.NET Core présentent actuellement des problèmes de compatibilité lorsqu’elles sont utilisées dans un projet ciblant native AOT, par exemple :
- Utilisation de la réflexion pour inspecter et découvrir des types.
- Chargement conditionnel de bibliothèques au moment de l’exécution.
- Génération de code à la volée pour implémenter des fonctionnalités.
Les bibliothèques utilisant ces fonctionnalités dynamiques doivent être mises à jour afin d’utiliser Native AOT. Ils peuvent être mis à jour à l’aide d’outils tels que les générateurs de sources Roslyn.
Les auteurs de bibliothèque qui espèrent prendre en charge l’AOT native sont encouragés à :
Voir aussi
- Prise en charge d’ASP.NET Core pour Native AOT
- Déploiement de Native AOT
- Utilisation du générateur de sources du classeur de configuration
- Le modèle minimal de compilation de l'API AOT
- comparer
WebApplication.CreateBuilder
àCreateSlimBuilder
- Explorer le nouveau générateur de source d’API minimal
- Remplacement des appels de méthode par des intercepteurs
- Générateur de source de liaison de configuration