Neues zu Roslyn und C#

Seite 2: Tools

Inhaltsverzeichnis

Neben vielen Beispielen in Form von C#- und Visual Basic.NET-Code, liefert die aktualisierte Roslyn-Preview auch einige Tools mit. Sie sollen zeigen, was Roslyn ermöglicht und integrieren sich teilweise direkt in Visual Studio.

Besonders hilfreich ist etwa der Syntax Visualizer. Das Werkzeug ermöglicht die Inspektion beliebigen C#- und Visual-Basic.NET-Codes, der innerhalb von Visual Studio geöffnet ist. Das Tool ist direkt in Visual Studio integriert und lässt sich über View > Other Windows > Roslyn Syntax Visualizer aufrufen. Abbildung 2 zeigt es in Aktion.

Die zwei Bereiche des Syntax Visualizer (Abb. 2)

Im oberen Bereich ist der Syntaxbaum zu sehen. Der untere zeigt die Eigenschaften des angeklickten Elements an. Das verdeutlicht die Art und Weise, wie Roslyn Quelltext erkennt und verarbeitet, was den Syntax Visualizer zu einem unverzichtbaren Werkzeug macht, wenn selbst an oder mit Roslyn entwickelt werden soll.

Ein noch genaueres Bild vom Aufbau bietet ein sogenanntes Syntaxdiagramm. Ist im Code ein Bereich markiert, hebt der Visualizer die entsprechende Definition hervor. Über den Knoten lässt sich das Syntaxdiagramm mit der rechten Maustaste und dem Kontextmenüeintrag "View Directed Syntax Graph" aufrufen. Abbildung 3 zeigt als Beispiel ein Diagramm für eine statische Main-Methode. Beide der vorgestellten Features funktionieren für C# und Visual Basic.NET. Die weiteren Funktionen des Syntax Visualizers sind detailliert in der Dokumentation zu Roslyn auf CodePlex beschrieben.

Directed Syntax Graph eines C#-Code-Ausschnitts (Abb. 3)

Darüber hinaus steht beispielsweise noch der sogenannte Syntax Quoter zur Verfügung. Es handelt sich dabei um eine Webseite, die C#- und Visual-Basic-.NET-Code entgegennimmt. Auf Knopfdruck analyisiert sie Letzteren und zerlegt ihn in seine Struktur. Sie dient im Anschluss als Grundlage für das Erzeugen von Anweisungen, die von der Roslyn-API Gebrauch machen, um den vom Benutzer eingegeben Code zu reproduzieren. Das erleichtert es Entwicklern enorm, eigene Quelltexte durch die Roslyn-API zu erzeugen, da die dafür erforderlichen Aufrufe nicht mehr manuell Anweisung für Anweisung einzugeben sind.

Damit reiht sich das Tool in die Riege der Werkzeuge für die Entwickler ein, die Roslyn erweitern oder damit weitere Werkzeuge erstellen möchten. Abbildung 4 enthält den erzeugen Quelltext für das Beispiel

var message = "Hallo";

Die Webseite kommt zwar auch mit deutlich komplexeren Beispielen zurecht, allerdings sprengen die erzeugten API-Aufrufe schnell den Platz für eine Abbildung.

Syntax Quoter hilft beim automatischen Erzeugen von API-Aufrufen. (Abb. 4)

Zu guter Letzt sei noch der Verweis auf die online verfügbaren Quellen des Roslyn-Code erlaubt. Sie zeigen eindrucksvoll, was mit dem Compiler möglich ist. Die Live-Ansicht des Quelltextes ist ebenfalls mit Roslyn implementiert und steht für eigene Projekte zur Verfügung. Neben dem eigentlichen Roslyn-Code wurden auch die allgemeinen Referenzen der .NET-Plattform überarbeitet. Sie sind, dank Roslyn, deutlich einfacher zu navigieren.

Neben den vorgestellten Tools und den allgemeinen Möglichkeiten, die mit Roslyn zur Verfügung stehen, gibt es einen weiteren wichtigen Grund, sich mit der aktuellen Preview zu beschäftigen. Insbesondere für Entwickler, die nicht direkt an den Compiler-Funktionen des Projekts interessiert sind, sind die enthaltenen neuen Sprachfunktionen womöglich sogar die wichtigste Neuerung überhaupt.

Was unlängst als C# 6.0 bezeichnet wird, sind neue Sprach-Features von C#, die nur über Roslyn zur Verfügung stehen und sich auf keinem anderen Weg ausprobieren lassen. Tabelle 1 fasst wichtige C#-Versionen der Geschichte zusammen und listet einige entscheidende Sprachelemente auf, die in ihnen eingeführt wurden.

C#-Version .NET-Version Jahr Sprachelemente
2.0 2.0/3.0 2005 Generics, Iteratoren, Nullable-Datentyp, Kovarianz und Kontravarianz, Delegaten
3.0 3.5 2007 Implizit typisierte Variablen, Erweiterungsmethoden, Lambda-Ausdrücke, LINQ, Objekt- und Collection-Initialisierer
4.0 4.0 2010 Dynamische Bindung, optionale und benannte Agumente, generische Kovarianz und Kontravarianz

Tabelle 1: Einige wichtige Versionen von .NET und C#.

Recht offensichtlich ist, dass es sich bei den neuen Sprachfunktionen meist um syntaktischen Zucker handelt. Bis auf einige Ausnahmen vereinfacht die neue Version nur Dinge, die bisher schon mit C# möglich waren. Große Umbrüche oder gar ein neues Sprachdesign lassen sich nicht finden. C# 6.0 setzt deutlich auf Komfort und nähert sich in Fragen des syntaktischen Aufbaus anderen Sprachen.