.NET 7-Funktionen – Native-AOT-Bereitstellung
(dotnetstuffs.com)- Was ist .NET AOT?
- Native-AOT-Bereitstellung
.NET 7 kann jetzt als Konsolenanwendung nativen Code für Windows, Linux und macOS in einer kleinen Größe von etwa 2 MB ohne .NET-Runtime erzeugen und ohne Abhängigkeiten ausgeführt werden.
5 Kommentare
macOS, das in .NET 7 nicht unterstützt wurde, wird in .NET 8 offiziell unterstützt.
https://learn.microsoft.com/en-us/dotnet/…
Wenn man sich die offizielle Microsoft-Dokumentation ansieht, gibt es bei dieser Funktion zusätzlich zu den grundlegenden Einschränkungen, die aus der vorzeitigen nativen Kompilierung entstehen, noch einige weitere Einschränkungen, weil sie sich noch in einem frühen Entwicklungsstadium befindet. Sie kann noch nicht auf ASP.NET-Core-Apps angewendet werden, Unterstützung auf Bibliotheksebene ist erforderlich, und auch beim Debugging oder Profiling gibt es noch Grenzen. Außerdem werden als CPU-Architekturen nur x64 und ARM64 unterstützt, sodass sich keine Apps für 32-Bit-Windows erstellen lassen. Ein bemerkenswerter Punkt ist zudem, dass man mit dieser Funktion statische Bibliotheken erstellen kann, die sich auch in Nicht-.NET-Apps verwenden lassen.
Bei der Vorstellung von .NET 7 hat Microsoft es als „Plattform für cloudnative Apps“ bezeichnet. Dafür wurde auch eine Funktion zum Bereitstellen von Apps als Docker-Container hinzugefügt. Wahrscheinlich wurde auch die AOT-Unterstützung als Werkzeug ergänzt, um die Image-Größe und Startzeit solcher containerisierten Apps zu optimieren. Da die Unterstützung für ASP.NET Core aber noch in Arbeit ist, dürfte es noch etwas dauern, bis diese Funktion in cloudnativen Apps wirklich zur Geltung kommt.
Referenz:
Vielen Dank für die freundliche Antwort.
Konsolenanwendungen haben die Vorschauphase hinter sich gelassen und befinden sich nun in der offiziellen Release-Phase, sodass sich damit reale Anwendungen entwickeln lassen.
Wie Sie erwähnt haben, befindet sich das Ganze noch in einem frühen Stadium, daher gibt es noch keine Unterstützung für ASP.NET Core, WPF, Windows Forms oder WinUI.
Außerdem passt es nicht zu dem Bedarf, in Docker-Containern bereitzustellen. ASP.NET Core wird nämlich noch nicht unterstützt.
Ebenso gilt, wie Sie sagten, dass der Code in nativen Code kompiliert wird und daher die meisten Funktionen von Reflector nicht verwendet werden können. Dieser Punkt scheint weniger eine Einschränkung der frühen Phase zu sein als vielmehr auf die unterschiedlichen Eigenschaften von IL-Code und nativem Code zurückzugehen.
Die Bedeutung von NativeAOT scheint derzeit darin zu liegen, dass sich auf Windows, Linux und macOS reine native, abhängigkeitfreie Binärdateien auf Ebene von Konsolenanwendungen hervorragend bereitstellen lassen.
Nicht auf macOS. Wie Sie dem von mir verlinkten Microsoft-Learn-Dokument entnehmen können, werden derzeit nur Windows und Linux von dieser Funktion unterstützt. macOS wird vermutlich später hinzugefügt.
Mit der Zeit wird sich das wohl lösen, aber ich denke, dass diese Funktion in der Praxis derzeit noch in vielen Fällen schwer einsetzbar ist.
Es stimmt, dass macOS noch nicht unterstützt wird.