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.
Weitere Informationen finden Sie unter native AOT-Bereitstellung, 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 Entwicklungsumgebung 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 und native AOT-Kompilierung
Viele der beliebten Bibliotheken, die in ASP.NET Core-Projekten verwendet werden, weisen derzeit einige Kompatibilitätsprobleme auf, wenn sie in einem Projekt für native AOT verwendet werden, z. B.:
- Verwendung der Reflektion zum Untersuchen und Ermitteln von Typen.
- Bedingtes Laden von Bibliotheken zur Laufzeit.
- Generierung von Code im Handumdrehen zur Implementierung von Funktionalitäten.
Bibliotheken, die diese dynamischen Features verwenden, müssen aktualisiert werden, um mit Native AOT zu arbeiten. Sie können mit Tools wie Roslyn-Quellgeneratoren aktualisiert werden.
Bibliotheksautoren, die natives AOT unterstützen möchten, wird Folgendes empfohlen:
- Lesen Sie mehr über die Kompatibilitätsanforderungen für natives AOT.
- Bereiten Sie die Bibliothek für das Kürzen vor.
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