Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 2796|Antwort: 2

[Quelle] .NET/C# Roslyn-Compiler-Plattform

[Link kopieren]
Veröffentlicht am 10.03.2024 10:58:32 | | | |
Compiler: Ein Compiler ist ein Programm, das Quellcode (Originalsprache), der in einer Programmiersprache geschrieben wurde, in eine andere (Zielsprache) umwandelt. Kompilierung ist der Prozess der Übersetzung vom Quellcode (meist einer hochstufigen Sprache) in Objektcode (meist eine niedrigstufige Sprache oder Maschinensprache), der direkt von einem Computer oder einer virtuellen Maschine ausgeführt werden kann.

In der .NET-Plattform gibt es zwei verschiedene Compiler in unterschiedlichen Phasen der Ausführung des Modells: einer namens Roslyn-Compiler, der C#- und VB-Code zu Assemblies kompiliert; Der andere heißt RyuJIT-Compiler, der den IL-Code (Zwischensprache) in der Assembler in Maschinencode kompiliert.

Dieser Artikel beginnt mit dem Roslyn-Compiler. Wir müssen nicht genau darauf eingehen, wie es funktioniert, sondern um zu verstehen, wie es funktioniert, um zu wissen, wofür es genutzt werden kann.

Anfangs wurde der Compiler der C#-Sprache in C++ geschrieben, später führte Microsoft einen neuen Compiler in C# selbst ein: Roslyn, der ein Bootstrap-Compiler ist.

Der Bootstrap-Compiler bedeutet, dass der Compiler einer bestimmten Programmiersprache in der Sprache selbst geschrieben ist. Jede Version des Bootstrap-Compilers wird mit einer Version kompiliert, die ihr vorausging, aber die erste Version muss von einem Compiler in einer anderen Sprache kompiliert werden, wie zum Beispiel Roslyns erste Version, die von einem Compiler in C++ kompiliert wurde. Viele Programmiersprachen reifen weiter und schreiben eigene Compiler mit der Sprache selbst, wie C# und Go.

Auf der .NET-Plattform ist der Roslyn-Compiler dafür verantwortlich, C#- und VB-Code in Assemblies zu kompilieren.

Die meisten bestehenden traditionellen Compiler sind sogenannte "Black-Box"-Muster, die Quellcode in ausführbare Dateien oder Bibliotheksdateien umwandeln, und wir haben keine Möglichkeit zu wissen, was dazwischen passiert. Im Gegensatz zu Roslyn ermöglicht Roslyn den Zugriff auf jede Phase des Code-Kompilierungsprozesses über APIs.

Sein Arbeitsmechanismus basiert auf einer Pipeline, mit vier Stufen, von denen jede ein eigenständiges Modul ist, und jedes Modul stellt eine entsprechende API bereit. Integrierte Entwicklungsumgebungen (IDEs) können diese APIs nutzen, um praktische Werkzeuge zur Verbesserung der Entwicklungseffizienz bereitzustellen, wie Code-Highlighting, intelligente Hinweise, Refaktorisierungstools, Leistungsanalysen und mehr. Außerdem können Entwickler bei Roslyn den Compiler als Service in ihren eigenen Programmen verwenden.

Nutzen Sie die von Roslyn bereitgestellten APIs, um Codebeispiele dynamisch zu generieren

Zuerst erstellen Sie eine neue ClassLibraryGenerator-Bibliothek und erstellen Sie ein .NET-Standardbibliotheksprojekt, das sich auf den Netstandard2.0-Zielrahmen-Framework-Namen (TFM) abzielt. Fügen Sie die NuGet-Pakete Microsoft.CodeAnalysis.Analyzers und Microsoft.CodeAnalysis.CSharp hinzu, csproj ist wie folgt konfiguriert:


Erstellen Sie eine neue C#-Datei namens TestSourceGenerator.cs, die Ihren eigenen Quellgenerator wie folgt angibt:

Vom Kontextobjekt aus können wir auf den kompilierten Einstiegspunkt oder die Hauptmethode zugreifen. Eine mainMethod-Instanz ist ein IMethodSymbol, das das Symbol einer Methode oder einer ähnlichen Methode darstellt (einschließlich Konstruktoren, Destruktoren, Operatoren oder Attribut-/Ereignis-Accessoren). Die Methode Microsoft.CodeAnalysis.Compilation.GetEntryPoint gibt das IMethodSymbol des Eintrittspunkts des Programms zurück. Andere Methoden ermöglichen es dir, jedes Methodensymbol in deinem Projekt zu finden. In diesem Objekt können wir den Namensraum (falls er existiert) und den Typ, den er enthält, ableiten. Die Quelle in diesem Beispiel ist eine interpolierte Zeichenkette, die den zu generierenden Quellcode vorschreibt, wobei die interpolierten Lücken den enthaltenen Namensraum und Typinformationen füllen. Füge die Quelle zum Kontext mit dem Namen des Prompts hinzu. Für dieses Beispiel erstellt der Builder eine neue Build-Quelldatei, die die Implementierung der partiellen Methode in der Konsolenanwendung enthält. Ein Quellgenerator kann so geschrieben werden, dass er beliebige Lieblingsquelle hinzufügt.

Erstellen Sie eine neue ConsoleApp4-Konsolen-App (ohne Top-Level-Anweisungen) mit folgendem Code:

Gleichzeitig fügen Sie die ClassLibraryGenerator-Projektreferenz wie folgt hinzu:

Versuche, die Konsolen-App mit folgender Ausgabe zu starten:



In Visual Studio klicken Sie auf das Projekt "Dependencies" > "Analyzer" - > "ClassLibraryGenerator" - > "ClassLibraryGenerator.TestSourceGenerator", doppelklicken Sie auf die Datei "Program.g.cs", um den generierten Code wie folgt zu sehen:



Prompt:Die Änderung des Builder-Codes kann einen Neustart von Visual Studio erfordern, um ihn zu sehen

Roslyn GitHub-Adresse:Der Hyperlink-Login ist sichtbar.

Referenz:

Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.




Vorhergehend:Codeausführung in Visual Studio über das C# Interactive-Fenster
Nächster:Windows 11 Original-ISO-Bilddatei herunterladen
 Vermieter| Veröffentlicht am 10.03.2024 10:59:12 |
Einführung und Unterschied zwischen JIT- und AOT-Kompilierung in .NET
https://www.itsvse.com/thread-10734-1-1.html
 Vermieter| Veröffentlicht am 06.07.2024 16:59:59 |
Verwenden Sie Roslyn, um C#-Code dynamisch zu kompilieren und ausführen
https://www.itsvse.com/thread-10786-1-1.html
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com