C # -Quellengeneratoren zur Leistungssteigerung in .NET 5

Microsoft hat eine Vorschau einer C # -Compilerfunktion namens Source Generators eingeführt, mit der ein Programm überprüft und Quelldateien generiert werden können, die einer Kompilierung hinzugefügt werden können. Laut Microsoft können Quellgeneratoren die Leistung in einer Reihe von Szenarien verbessern.

Ein am 29. April eingeführter Quellgenerator ist ein Teil des Codes (eine .NET Standard 2.0-Assembly), der während der Kompilierung ausgeführt wird und ein Programm überprüfen kann, um zusätzliche Dateien zu erstellen, die zusammen mit dem Rest des Codes kompiliert werden.

Mit Quellgeneratoren können C # -Entwickler Folgendes tun:

  • Rufen Sie eine Kompilierung ab, die den gesamten zu kompilierenden Benutzercode darstellt. Dieses Objekt kann überprüft werden und Entwickler können Code schreiben, der mit der Syntax und den semantischen Modellen für den zu kompilierenden Code funktioniert, wie bei Analysatoren.
  • Generieren Sie C # -Quelldateien, die während der Kompilierung einem Kompilierungsobjekt hinzugefügt werden sollen, wobei zusätzlicher Quellcode als Eingabe bereitgestellt wird, während der Code kompiliert wird.

Laut Microsoft kann der Benutzercode zusammen mit umfangreichen Metadaten, die der Compiler während der Kompilierung erstellt, überprüft werden, wobei C # -Code basierend auf den analysierten Daten wieder in dieselbe Kompilierung ausgegeben wird. Quellgeneratoren ähneln den Roslyn-Analysatoren, die C # - oder Visual Basic-Code untersuchen, und dienen als Analysatoren, die C # -Quellcode ausgeben können.  

Quellgeneratoren werden als Teil von C # 9 ausgeliefert. Das Unternehmen hat ein Kochbuch für Quellgeneratoren und ein Designdokument für Quellgeneratoren zur Verfügung gestellt, um Entwicklern den Einstieg zu erleichtern.

Zu den Szenarien, die von Quellgeneratoren profitieren, gehören:

  • Laufzeitreflexion durchführen. Durch die Analyse von Code beim Start einer App kann beispielsweise zur Kompilierungszeit eine Controller-Erkennungsphase stattfinden, die zu schnelleren Startzeiten führt.
  • Um die Verwendung von "streng typisierten" APIs zu vermeiden, z. B. wie das ASP.NET Core-Routing zwischen Controllern und Razor-Seiten funktioniert. Das Routing könnte stark typisiert und die erforderlichen Zeichenfolgen als Detail zur Kompilierungszeit generiert werden.
  • Beseitigung von Hindernissen für Linker-basierte und vorzeitige Kompilierungsoptimierungen.

Um auf Quellgeneratoren zugreifen zu können, müssen Entwickler die neueste .NET 5-Vorschau und die neueste Visual Studio-Vorschau installieren.