Freigeben über


Erkunden von Code mit der Roslyn-Syntaxschnellansicht in Visual Studio

Dieser Artikel bietet einen Überblick über das Syntax-Visualisierer-Tool, das als Teil des .NET Compiler Platform („Roslyn“) SDK geliefert wird. Das Syntax-Visualizer ist ein Toolfenster, in dem Sie Syntaxstrukturen untersuchen und erkunden können. Es ist ein wesentliches Tool, um die Modelle für Code zu verstehen, den Sie analysieren möchten. Es ist auch eine Debughilfe, wenn Sie Ihre eigenen Anwendungen mit dem .NET Compiler Platform ("Roslyn") SDK entwickeln. Öffnen Sie dieses Tool, während Sie Ihre ersten Analysegeräte erstellen. Die Visualisierung hilft Ihnen, die von den APIs verwendeten Modelle zu verstehen. Sie können auch Tools wie SharpLab oder LINQPad verwenden, um Code zu prüfen und Syntaxstrukturen zu verstehen.

Installationsanweisungen – Visual Studio Installer

Es gibt zwei verschiedene Möglichkeiten, das .NET Compiler Platform SDK im Visual Studio Installer zu finden:

Installieren mit dem Visual Studio Installer – Arbeitslastenansicht

Das .NET Compiler Platform SDK wird nicht automatisch als Teil der Visual Studio-Erweiterungsentwicklungslast ausgewählt. Sie müssen sie als optionale Komponente auswählen.

  1. Ausführen des Visual Studio-Installationsprogramms
  2. Wählen Sie Ändern aus.
  3. Überprüfen Sie die Arbeitsauslastung der Visual Studio-Erweiterungsentwicklung .
  4. Öffnen Sie den Knoten Visual Studio-Extensionentwicklung in der Zusammenfassungsstruktur.
  5. Aktivieren Sie das Kontrollkästchen für .NET Compiler Platform SDK. Sie finden sie unter den optionalen Komponenten zuletzt.

Optional möchten Sie auch, dass der DGML-Editor Diagramme in der Visualisierung anzeigt:

  1. Öffnen Sie den Knoten „Einzelne Komponenten“ im Zusammenfassungsbaum.
  2. Aktivieren Sie das Kontrollkästchen für den DGML-Editor.

Installieren mit dem Visual Studio Installer – Registerkarte "Einzelne Komponenten"

  1. Ausführen des Visual Studio-Installationsprogramms
  2. Wählen Sie Ändern aus.
  3. Registerkarte "Einzelne Komponenten " auswählen
  4. Aktivieren Sie das Kontrollkästchen für .NET Compiler Platform SDK. Sie finden sie oben im Abschnitt "Compiler", "Buildtools" und "Laufzeiten" .

Optional möchten Sie auch, dass der DGML-Editor Diagramme in der Visualisierung anzeigt:

  1. Aktivieren Sie das Kontrollkästchen für den DGML-Editor. Sie finden sie im Abschnitt "Codetools ".

Machen Sie sich mit den Konzepten vertraut, die im .NET Compiler Platform SDK verwendet werden, indem Sie den Übersichtsartikel lesen. Es bietet eine Einführung in Syntaxstrukturen, Knoten, Token und Trivia.

Syntax-Visualisierer

Die Syntaxvisualisierer ermöglicht die Überprüfung des Syntaxbaums für die C#- oder Visual Basic-Codedatei im aktuell aktiven Editorfenster innerhalb der Visual Studio-IDE. Die Visualisierung kann gestartet werden, indem Sie auf "Ansicht>Andere Fenster>Syntax-Visualizer" klicken. Sie können auch die Schnellstart-Symbolleiste in der oberen rechten Ecke verwenden. Geben Sie "syntax" ein, und der Befehl zum Öffnen der Syntaxschnellansicht sollte angezeigt werden.

Mit diesem Befehl wird der Syntax-Visualizer als schwebendes Toolfenster geöffnet. Wenn kein Code-Editor-Fenster geöffnet ist, ist die Anzeige leer, wie in der folgenden Abbildung dargestellt.

Das Tool-Fenster

Docken Sie dieses Toolfenster an einer praktischen Position in Visual Studio an, z. B. auf der linken Seite. Die Visualizer zeigt Informationen zur aktuellen Codedatei an.

Erstellen Sie ein neues Projekt mit dem Befehl "Neues Projektspeichern>". Sie können entweder ein Visual Basic- oder C#-Projekt erstellen. Wenn Visual Studio die Hauptcodedatei für dieses Projekt öffnet, zeigt der Visualizer die Syntaxstruktur dafür an. Sie können eine beliebige vorhandene C#/Visual Basic-Datei in dieser Visual Studio-Instanz öffnen, und die Visualisierung zeigt die Syntaxstruktur dieser Datei an. Wenn mehrere Codedateien in Visual Studio geöffnet sind, zeigt der Visualizer die Syntaxstruktur für die derzeit aktive Codedatei an (die Codedatei mit Tastaturfokus).)

Wie in den vorherigen Bildern gezeigt, zeigt das Toolfenster für die Visualisierung die Syntaxstruktur oben und ein Eigenschaftenraster unten an. Das Eigenschaftenraster zeigt die Eigenschaften des Elements an, das derzeit in der Struktur ausgewählt ist, einschließlich .NET-Typ und Art (SyntaxKind) des Elements.

Syntaxstrukturen umfassen drei Arten von Elementen – Knoten, Token und Trivia. Weitere Informationen zu diesen Typen finden Sie im Artikel "Arbeiten mit Syntax ". Elemente jedes Typs werden mit einer anderen Farbe dargestellt. Klicken Sie auf die Schaltfläche "Legende", um einen Überblick über die verwendeten Farben zu finden.

Jedes Element im Baum zeigt auch seine eigene Spannweite an. Der Bereich umfasst die Indizes (Start- und Endposition) des Knotens in der Textdatei. Im vorherigen C#-Beispiel weist das ausgewählte Token "UsingKeyword [0..5)" einen Span-Wert auf, der fünf Zeichen breit ist( [0..5). Die Schreibweise "[..)" bedeutet, dass der Anfangsindex Teil der Spanne ist, der Endindex jedoch nicht.

Es gibt zwei Möglichkeiten, in der Struktur zu navigieren:

  • Erweitern oder klicken Sie auf Elemente im Baum. Die Visualisierung wählt automatisch den Text aus, der der Spanne dieses Elements im Code-Editor entspricht.
  • Klicken oder markieren Sie Text im Code-Editor. Wenn Sie im vorangehenden Visual Basic-Beispiel die Zeile mit "Modulmodul1" im Code-Editor auswählen, navigiert der Visualizer automatisch zum entsprechenden ModuleStatement-Knoten in der Struktur.

Die Visualisierung hebt das Element in der Struktur hervor, dessen Spannweite am besten mit der Spanne des im Editor ausgewählten Texts übereinstimmt.

Die Visualisierung aktualisiert den Baum, um den Änderungen in der aktiven Codedatei zu entsprechen. Fügen Sie einen Aufruf zu Console.WriteLine() innerhalb von Main() hinzu. Während der Eingabe aktualisiert der Visualizer den Baum.

Stoppen Sie die Eingabe nach der Eingabe von Console.. Die Struktur besitzt einige rosa gefärbte Elemente. An diesem Punkt gibt es Fehler (auch als "Diagnose" bezeichnet) im eingegebenen Code. Diese Fehler werden an Knoten, Token und Trivia im Syntaxbaum angefügt. Der Visualizer zeigt Ihnen, welche Elemente Fehler aufweisen, indem er den Hintergrund in Rosa hervorhebt. Sie können die Fehler für jedes Element prüfen, das rosa gefärbt ist, indem Sie mit dem Mauszeiger auf das Element zeigen. Der Visualizer zeigt nur syntaktische Fehler an (diese Fehler im Zusammenhang mit der Syntax des typisierten Codes); es werden keine semantischen Fehler angezeigt.

Syntaxdiagramme

Klicken Sie mit der rechten Maustaste auf ein beliebiges Element im Baum und klicken Sie auf "Gerichtete Syntaxdiagramm anzeigen".

Der Visualizer zeigt eine grafische Darstellung der untergeordneten Struktur mit Wurzel bei dem ausgewählten Element. Probieren Sie diese Schritte für den MethodDeclaration-Knoten aus, der der Main() Methode im C#-Beispiel entspricht. Die Visualisierung zeigt ein Syntaxdiagramm an, das wie folgt aussieht:

Anzeigen eines C#-Syntaxdiagramms

Der Syntaxdiagramm-Viewer verfügt über eine Option zum Anzeigen einer Legende für das Farbschema. Sie können auch mit der Maus auf einzelne Elemente im Syntaxdiagramm zeigen, um die Eigenschaften anzuzeigen, die diesem Element entsprechen.

Sie können Syntaxdiagramme für verschiedene Elemente in der Struktur wiederholt anzeigen, und die Diagramme werden immer im selben Fenster in Visual Studio angezeigt. Sie können dieses Fenster an einer praktischen Position in Visual Studio andocken, damit Sie nicht zwischen Registerkarten wechseln müssen, um ein neues Syntaxdiagramm anzuzeigen. Der Bereich unterhalb der Code-Editor-Fenster ist oft praktisch.

Hier ist das Andocklayout, das mit dem Visualisierungstoolfenster und dem Syntaxdiagrammfenster verwendet werden soll:

Ein Andocklayout für das Visualisierungs- und Syntaxdiagrammfenster

Eine weitere Option besteht darin, das Syntaxdiagrammfenster auf einem zweiten Monitor in einem Dual-Monitor-Setup zu platzieren.

Untersuchen der Semantik

Der Syntax-Visualizer ermöglicht eine rudimentäre Überprüfung von Symbolen und semantischen Informationen. Geben Sie double x = 1 + 1; im C#-Beispiel in "Main()" ein. Wählen Sie dann den Ausdruck 1 + 1 im Code-Editor-Fenster aus. Der Visualizer hebt den AddExpression-Knoten im Visualizer hervor. Klicken Sie mit der rechten Maustaste auf dieses AddExpression und klicken Sie auf Symbol anzeigen (falls vorhanden). Beachten Sie, dass die meisten Menüelemente den Qualifizierer "if any" aufweisen. Der Syntax-Visualizer inspiziert die Eigenschaften eines Knotens, einschließlich Eigenschaften, die möglicherweise nicht für alle Knoten vorhanden sind.

Das Eigenschaftenraster im Visualisierer wird aktualisiert, wie in der folgenden Abbildung gezeigt: Das Symbol für den Ausdruck ist ein SynthesizedIntrinsicOperatorSymbol mit Kind = Methode.

Symboleigenschaften im Syntax-Visualizer

Klicken Sie mit der rechten Maustaste auf denselben AddExpression-Knoten , und wählen Sie "View TypeSymbol" (falls vorhanden) aus. Das Eigenschaftenraster in der Visualisierung wird aktualisiert, wie in der folgenden Abbildung dargestellt, was angibt, dass der Typ des ausgewählten Ausdrucks ist Int32.

TypeSymbol-Eigenschaften

Klicken Sie mit der rechten Maustaste auf denselben AddExpression-Knoten , und wählen Sie " Konvertiertes TypeSymbol anzeigen" (falls vorhanden) aus. Das Eigenschaftenraster wird aktualisiert und zeigt an, dass obwohl der Typ des Ausdrucks Int32 ist, der umgewandelte Typ des Ausdrucks Double ist, wie in der folgenden Abbildung dargestellt. Dieser Knoten enthält konvertierte Typsymbolinformationen, da der Int32 Ausdruck in einem Kontext auftritt, in dem er in ein Double konvertiert werden muss. Diese Konvertierung entspricht dem für die Variable x auf der linken Seite des Zuweisungsoperators angegebenen Double-Typ.

Konvertierte TypeSymbol-Eigenschaften

Klicken Sie abschließend mit der rechten Maustaste auf denselben AddExpression-Knoten , und wählen Sie " Konstantenwert anzeigen" (falls vorhanden) aus. Das Eigenschaftenraster zeigt, dass der Wert des Ausdrucks eine Kompilierungszeitkonstante mit dem Wert 2ist.

Ein konstanter Wert

Das vorherige Beispiel kann auch in Visual Basic repliziert werden. Geben Sie Dim x As Double = 1 + 1 in einer Visual Basic-Datei ein. Wählen Sie den Ausdruck 1 + 1 im Code-Editor-Fenster aus. Der Visualizer hebt den entsprechenden AddExpression-Knoten im Visualizer hervor. Wiederholen Sie die vorherigen Schritte für dieses AddExpression , und Sie sollten identische Ergebnisse sehen.

Untersuchen Sie weitere Code in Visual Basic. Aktualisieren Sie Die Visual Basic-Hauptdatei mit dem folgenden Code:

Imports C = System.Console

Module Program
    Sub Main(args As String())
        C.WriteLine()
    End Sub
End Module

Dieser Code fügt einen Alias mit dem Namen C ein, der oben im Dokument dem Typ System.Console zugeordnet wird, und verwendet diesen Alias innerhalb von Main(). Wählen Sie die Verwendung dieses Alias, des C im C.WriteLine(), innerhalb der Methode Main() aus. Der Visualizer wählt den entsprechenden IdentifierName-Knoten im Visualizer aus. Klicken Sie mit der rechten Maustaste auf diesen Knoten, und klicken Sie auf das Ansichtssymbol (falls vorhanden). Das Eigenschaftenraster gibt an, dass dieser Bezeichner an den Typ System.Console gebunden ist, wie in der folgenden Abbildung dargestellt:

Eigenschaften für das Symbol C im Syntax-Visualizer

Klicken Sie mit der rechten Maustaste auf denselben IdentifierName-Knoten , und wählen Sie "AliasSymbol anzeigen" (falls vorhanden) aus. Das Eigenschaftenraster gibt an, dass der Bezeichner ein Alias mit dem Namen C ist, der an das System.Console Ziel gebunden ist. Mit anderen Worten, das Eigenschaftenraster stellt Informationen zum AliasSymbol bereit, das dem Bezeichner Centspricht.

AliasSymbol-Eigenschaften

Überprüfen Sie das Symbol, das einem deklarierten Typ, einer Methode, einer Eigenschaft entspricht. Wählen Sie den entsprechenden Knoten im Visualizer aus, und klicken Sie mit der rechten Maustaste, um auf das Ansichtssymbol (falls vorhanden) zuzugreifen. Wählen Sie die Methode Sub Main() aus, einschließlich des Methodenkörpers. Klicken Sie im Visualizer mit der rechten Maustaste auf den entsprechenden SubBlock-Knoten , und wählen Sie "Ansichtssymbol( falls vorhanden)" aus. Das Eigenschaftenraster zeigt, dass das MethodSymbol für diesen SubBlock den Namen Main mit Rückgabetyp Void hat.

Anzeigesymbol für eine Methodendeklaration

Die obigen Visual Basic-Beispiele können einfach in C# repliziert werden. Geben Sie using C = System.Console; anstelle von Imports C = System.Console für den Alias ein. Die vorstehenden Schritte in C# ergeben identische Ergebnisse im Visualizer-Fenster.

Semantische Inspektionsoperationen sind nur auf Knoten verfügbar. Sie sind nicht bei Token oder Trivia verfügbar. Nicht alle Knoten verfügen über interessante semantische Informationen, die überprüft werden sollen. Wenn ein Knoten keine interessanten semantischen Informationen enthält, wird bei Rechtsklick und Auswahl von "Ansicht * Symbol" (falls vorhanden) ein leeres Eigenschaftenraster angezeigt.

Weitere Informationen zu APIs zum Ausführen der semantischen Analyse finden Sie im Übersichtsdokument "Arbeiten mit Semantik ".

Schließen des Syntax-Visualizers

Sie können das Visualisierungsfenster schließen, wenn Sie es nicht zum Untersuchen des Quellcodes verwenden. Die Syntaxschnellansicht aktualisiert die Anzeige, während Sie durch Code navigieren, die Quelle bearbeiten und ändern. Es kann ablenken, wenn Sie es nicht verwenden.