Esercitazione: Pubblicare un'app ASP.NET Core con AOT nativo
ASP.NET Core 8.0 introduce il supporto per
Nota
- La funzionalità AOT nativa è attualmente in anteprima.
- In .NET 8, non tutte le funzionalità di ASP.NET Core sono compatibili con Native AOT.
- Le schede sono disponibili per le istruzioni dell'interfaccia della riga di comando di .NET
e Visual Studio :- Visual Studio è un prerequisito anche se è selezionata la scheda della CLI.
- La CLI deve essere usata per pubblicare anche nel caso in cui sia selezionata la scheda di Visual Studio.
Prerequisiti
Su Linux, consultare Prerequisiti per la distribuzione nativa AOT.
Visual Studio 2022 con il carico di lavoro Desktop development con C++ installato.
Nota
Visual Studio 2022 è necessario perché Native AOT richiede link.exe e le librerie di runtime statiche di Visual C++. Non sono previsti piani per supportare l'AOT nativo senza Visual Studio.
Creare un'app Web con AOT nativo
Creare un'applicazione API ASP.NET Core configurata per funzionare con AOT nativo:
Eseguire i comandi seguenti:
dotnet new webapiaot -o MyFirstAotWebApi && cd MyFirstAotWebApi
Viene visualizzato un output simile all'esempio seguente:
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.
Pubblicare l'app AOT nativa
Verificare che l'app possa essere pubblicata con AOT nativo:
dotnet publish
Comando dotnet publish
:
- Compila i file di origine.
- Genera file di codice sorgente compilati.
- Passa gli assembly generati a un compilatore IL nativo. Il compilatore IL produce l'eseguibile nativo. L'eseguibile nativo contiene il codice nativo del computer.
Viene visualizzato un output simile all'esempio seguente:
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\
L'output può differire dall'esempio precedente a seconda della versione di .NET 8 usata, della directory usata e di altri fattori.
Esaminare il contenuto della directory di output:
dir bin\Release\net8.0\win-x64\publish
Viene visualizzato un output simile all'esempio seguente:
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'eseguibile è indipendente e non richiede l'esecuzione di un runtime .NET. Al momento dell'avvio, si comporta come l'app eseguita nell'ambiente di sviluppo. Eseguire l'app AOT:
.\bin\Release\net8.0\win-x64\publish\MyFirstAotWebApi.exe
Viene visualizzato un output simile all'esempio seguente:
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
Librerie e AOT nativo
Molte delle librerie più diffuse usate nei progetti ASP.NET Core presentano attualmente alcuni problemi di compatibilità quando vengono usati in un progetto destinato a AOT nativo, ad esempio:
- Uso della riflessione per esaminare e scoprire i tipi.
- Caricamento condizionale delle librerie in fase di esecuzione.
- Generazione di codice in tempo reale per implementare la funzionalità.
Le librerie che usano queste funzionalità dinamiche devono essere aggiornate per lavorare con AOT nativo. Possono essere aggiornati utilizzando strumenti come i generatori di codice sorgente di Roslyn.
Gli autori di librerie che sperano di supportare native AOT sono invitati a:
- Leggi sui requisiti di compatibilità AOT nativi .
- Preparare la libreria per tagliare.
Vedere anche
- supporto di ASP.NET Core per AOT nativo
- distribuzione AOT nativa
- Utilizzo del generatore di codice sorgente dell'associazione di configurazione
- Modello di compilazione api AOT minimo
-
Confronto tra
WebApplication.CreateBuilder
eCreateSlimBuilder
- Esplorazione del nuovo generatore di sorgente API minimo
- Sostituzione delle chiamate al metodo con intercettori
- generatore di codice sorgente per associazione di configurazione