Tutoriel : publier une application ASP.NET Core à l'aide de l’AOA 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é d’AOA natif est actuellement en préversion.
- Dans .NET 8, toutes les fonctionnalités ASP.NET Core ne sont pas compatibles avec l’AOA natif.
- Les onglets sont fournis pour les instructions de l’interface de ligne de commande .NET 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é.
Prérequis
Sur Linux, consultez les Conditions préalables pour le déploiement d’AOA natif.
Préversion Visual Studio 2022 avec la charge de travail Développement Desktop avec C++ installée.
Remarque
La préversion de Visual Studio 2022 est requise, car l’AOA natif nécessite link.exe et les bibliothèques de runtime statique Visual C++. Il n’est pas prévu de prendre en charge l’AOA natif sans Visual Studio.
Créer une application web avec l’AOA natif
Créer une application API ASP.NET Core configurée pour fonctionner avec l’AOA natif :
Exécutez les commandes suivantes :
dotnet new webapiaot -o MyFirstAotWebApi && cd MyFirstAotWebApi
Une sortie similaire à l’exemple suivant s’affiche à l’écran :
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 d’AOA natif
Vérifiez que l’application peut être publiée à l’aide de l’AOA natif :
dotnet publish
La commande dotnet publish
:
- Compile les fichiers sources.
- Génère des fichiers de code source compilés.
- Transmet les assemblys 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.
Une sortie similaire à l’exemple suivant s’affiche à l’écran :
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
Une sortie similaire à l’exemple suivant s’affiche à l’écran :
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
Le fichier exécutable est autonome et ne nécessite pas de runtime .NET pour s’exécuter. 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
Une sortie similaire à l’exemple suivant s’affiche à l’écran :
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 AOA natif
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 l’AOA natif, 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 qui utilisent ces fonctionnalités dynamiques doivent être mises à jour pour fonctionner avec l’AOA natif. Elles peuvent être mises à jour à l’aide d’outils tels que les générateurs de sources Roslyn.
Les auteurs de bibliothèques qui espèrent prendre en charge l’AOA natif sont invités à :
- Découvrir les exigences de compatibilité avec l’AOA natif.
- Préparez la bibliothèque pour le découpage.
Voir aussi
- Prise en charge ASP.NET Core pour l’AOA natif
- Déploiement de Native AOT
- À l’aide du générateur source du classeur de configuration
- Modèle de compilation AOT de l’API minimale
- Comparaison de
WebApplication.CreateBuilder
àCreateSlimBuilder
- Exploration du 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