Native AOT und Trimming für die Dokumentkonvertierung in .NET

Beide DocToolkit-Assemblys sind trimmbar, die Kern-Assembly ist AOT-kompatibel, und die CI führt das Ergebnis aus. Diese Anleitung nennt den Befehl, was die CI belegt, und die eine Warnung, mit der Sie rechnen müssen.

dotnet publish -c Release -r linux-x64 -p:PublishAot=true

Was die CI belegt

  • Beide Assemblys sind als trimmbar markiert, und die Kern-Assembly ist als AOT-kompatibel markiert.
  • Die CI veröffentlicht eine Probe-Anwendung, in einem Job getrimmt und im anderen als Native AOT, und prüft, dass keine Warnung zu DocToolkit gehört.
  • Dann führt die CI die Binärdatei aus. Eine Bibliothek, die sich ohne Warnung veröffentlichen lässt, aber beim ersten Aufruf abstürzt, würde keinen der beiden Jobs bestehen.
  • Das Ausführen ist wichtig, weil weder Trimming noch AOT beim Veröffentlichen scheitern, wenn sie scheitern: Die App wirft eine Ausnahme oder erzeugt still ein leeres Dokument, in der Produktion.

Die eine ClosedXML-Warnung

  • Die zugrunde liegenden OOXML-Bibliotheken verwenden stellenweise Reflection.
  • ClosedXML gibt eine Warnung aus, IL2090 in DescribedEnumParser<T>, sowohl beim Trimming als auch bei AOT.
  • Lesen und Schreiben von Tabellen funktionieren in den veröffentlichten Binärdateien, die die CI ausführt, korrekt, aber die Warnung erscheint in Ihrer eigenen Ausgabe.

Was es nicht kann

  • Wenn Sie aggressiv trimmen oder mit AOT veröffentlichen und etwas scheitert, prüfen Sie die Warnungen der OOXML-Assemblys, bevor Sie DocToolkit verdächtigen.