Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
.NET Native Ahead-of-Time (AOT) ist in ASP.NET Core verfügbar.
Anmerkung
Minimale APIs sind nicht mit systemeigenen AOT kompatibel.
Unter Native AOT-Bereitstellung finden Sie weitere Informationen, einschließlich:
Voraussetzungen
Unter Linux finden Sie Voraussetzungen für die native AOT-Bereitstellung.
Visual Studio 2022, bei dem die Workload Desktopentwicklung mit C++ installiert ist.
Anmerkung
Visual Studio 2022 ist erforderlich, da Native AOT link.exe sowie die statischen Laufzeitbibliotheken von Visual C++ benötigt. Es gibt keine Pläne, systemeigene AOT ohne Visual Studio zu unterstützen.
Erstellung einer Webanwendung mit nativem AOT
Erstellen Sie eine ASP.NET Core-API-App, die für die Arbeit mit nativem AOT konfiguriert ist:
Führen Sie die folgenden Befehle aus:
dotnet new webapiaot -o MyFirstAotWebApi && cd MyFirstAotWebApi
Dadurch werden Informationen angezeigt, die mit denen der folgenden Ausgabe vergleichbar sind:
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.
Veröffentlichen der nativen AOT-App
Überprüfen Sie, ob die App mithilfe von Native AOT veröffentlicht werden kann:
dotnet publish
Der Befehl dotnet publish:
- Kompiliert die Quelldateien.
- Generiert Quellcodedateien, die kompiliert werden.
- Übergibt generierte Assemblys an einen nativen IL-Compiler. Der IL-Compiler erzeugt die native ausführbare Datei. Die native ausführbare Datei enthält den nativen Computercode.
Dadurch werden Informationen angezeigt, die mit denen der folgenden Ausgabe vergleichbar sind:
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\
Die Ausgabe kann vom vorherigen Beispiel abhängig von der verwendeten Version von .NET 8, dem verwendeten Verzeichnis und anderen Faktoren abweichen.
Überprüfen Sie den Inhalt des Ausgabeverzeichnisses:
dir bin\Release\net8.0\win-x64\publish
Dadurch werden Informationen angezeigt, die mit denen der folgenden Ausgabe vergleichbar sind:
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
Die ausführbare Datei ist eigenständig und erfordert keine .NET-Laufzeit, um ausgeführt zu werden. Beim Starten verhält es sich genauso wie die App, die in der Development Umgebung ausgeführt wird. Führen Sie die AOT-App aus:
.\bin\Release\net8.0\win-x64\publish\MyFirstAotWebApi.exe
Dadurch werden Informationen angezeigt, die mit denen der folgenden Ausgabe vergleichbar sind:
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
Bibliotheken mit nativem AOT verwenden
Viele beliebte Bibliotheken, die in ASP.NET Core Projekten verwendet werden, weisen derzeit einige Kompatibilitätsprobleme auf, wenn sie in Projekte integriert werden, die auf native AOT abzielen, z. B.:
- Verwenden von Spiegelung zum Untersuchen und Ermitteln von Typen
- Bedingtes Laden von Bibliotheken zur Laufzeit
- Generieren von Code im Handumdrehen zur Implementierung von Funktionalität
Bibliotheken, die diese dynamischen Features verwenden, erfordern Updates für die Arbeit mit nativem AOT. Es stehen verschiedene Tools zum Anwenden der erforderlichen Updates zur Verfügung, z. B. Roslyn-Quellgeneratoren.
Bibliotheksautoren, die hoffen, native AOT zu unterstützen, werden ermutigt, die folgenden Artikel zu lesen:
Weitere Informationen
- ASP.NET Core-Unterstützung für native AOT-Kompilierung
- Native AOT-Bereitstellung
- Verwenden des Quell-Generators für die Konfigurationsbindung
- Die Vorlage für die Minimale API-AOT-Kompilierung
-
Vergleichen von
WebApplication.CreateBuildermitCreateSlimBuilder - Erkunden des neuen Minimal-API-Quellgenerators
- Ersetzen von Methodenaufrufen durch Interceptors
- Quell-Generator für Konfigurationsbindung