Unter der Haube von Visual Studio hat sich einiges geändert. Keine Angst, man muss sich in nichts Neues einarbeiten. Alles bleibt beim Alten, wer aber mehr aus Visual Studio und/oder dem eigenen Produkt holen möchte, für denjenigen lohnt sich ein genauer Blick auf Roslyn.
Roslyn ist die neue Compiler-Plattform für C# und Visual Basic. Sie ist in Visual Studio 2015 fest integriert und ist ein weiterer Baustein der Öffnung des .NET-Stacks seitens Microsoft. Das Produkt ist Open Source und wird auf GitHub in einem eigenen Repository entwickelt.
Was ist daran neu?
Die bisherigen Compiler für C# und Visual Basic sind jeweils eine Blackbox, ihre einzige Funktion ist Quelltext in Assemblys zu übersetzen. Roslyn öffnet diese Box und ermöglicht den Zugriff mit verschiedenen APIs auf das zuvor Verborgene. So ist es unter anderem möglich auf den Abstract Syntax Tree einer Datei per API zuzugreifen.
Roslyn wird wie .NET Core per NuGet package verteilt. In einem Visual Studio-Projekt kann Roslyn direkt konsumiert werden. Durch die Veröffentlichung unter der Apache License, kann Roslyn mit der eigenen Software ausgeliefert.
Welche Vorteile bringt Roslyn?
In Visual Studio 2015 ergeben sich durch die Verwendung von Roslyn für Projekte in C# und Visual Basic neue Möglichkeiten. Die IDE selbst profitiert von Roslyn. So werden Syntax-Fehler während des Tippens schneller angezeigt.
Durch die Erweiterbarkeit von Roslyn und deren Features API, können darauf aufbauende Erweiterungen realisiert werden.
So lassen sich zum Beispiel Analyzer schreiben, welche Projekt/Unternehmensspezifische Codierungsrichtlinien überprüfen und Behebungen für die korrekte Einhaltung einer Richtlinie vorschlagen. Verteilt man diese Analyzer mit NuGet, entfällt eine separate Installation einer Drittanwendung. Ohne Roslyn ist ein Analyzer nicht trivial umzusetzen.
Für einen Analyzer muss von der Klasse DiagnosticAnalyzer abgeleitet werden und innerhalb der Initialize-Methode auf den Parameter context Aktionen registriert, welche beim Ändern von Code aufgerufen werden und auf diese reagiert werden kann. Bei den Vorschlägen für die Einhaltung einer Richtlinien muss eine Klasse von CodeFixProvider abgeleitet und unter anderem die Methode RegisterCodeFixesAsync implementiert werden. Darin können Aktionen registriert werden, welche die Vorschläge unterbreiten.
Einen detaillierteren Einstiegspunkt bieten die Artikel für den Analyzer und für die Vorschläge der Behebung auf Microsoft.
Ein gutes Beispiel einer Implementierung ist StyleCopAnalyzers. Das Ziel dieses Projekts ist es die StyleCop-Regeln auf die neuen Plattform umzusetzen. Ist bei StyleCop noch eine Installation notwendig, muss nun StyleCopAnalyzers einmalig den Projekten per NuGet zugewiesen werden.
Das folgende Screenshot zeigt das zuvor beschriebene Verhalten mit StyleCopAnalyzers.
Da es die Lizenz erlaubt, Roslyn selbst zu verteilen, kann es in eigenen kommerziellen Anwendungen verwendet und angepasst werden. Ein mögliches Anwendungsszenario ist eine abgespeckte IDE zum Schreiben von Skripten. Syntax-Highlighting und Analyzer können in der IDE selbstverständlich direkt verwendet werden. Diese Skripte können mittels der Scripting API integriert und verarbeitet werden. Mit Roslyn und C#/Visual Basic lassen sich somit die Anwendung skriptfähig machen und diese Skripts in der Anwendung selbst geschrieben werden.
Fazit
Roslyn ist nicht nur ein Tool, welches dem Entwickler beim Schreiben von Code Arbeit abnimmt. Es kann auch aktiv in Produkten verwendet werden und dort neue Türen öffnen. Das eigene Produkt profitiert von der Open Source-Gemeinde, welche Roslyn ständig aktiv weiter entwickelt.