Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
.NET native à l’avance (AOT) est disponible dans ASP.NET Core.
Remarque
Les API minimales ne sont pas compatibles avec AOT natif.
Pour plus d’informations, consultez le déploiement AOT natif , notamment :
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 Development . 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
- Modèle de compilation AOT de l'API Minimal
-
comparer
WebApplication.CreateBuilderàCreateSlimBuilder - Exploration du nouveau générateur de source d’API minimale
- Remplacement des appels de méthode par des intercepteurs
- Générateur de source de liaison de configuration