C#-Komfort im Editor nachrüsten
OmniSharp
Editoren und IDEs gibt es viele, und die meisten unterstützen von Haus aus die gewünschten Syntax-Hervorhebungen der gewählten Programmiersprache. Und es gab auch sicherlich mal eine Zeit, in welcher damit die Anforderungen des Entwicklers abgedeckt wurden. Wenn aber im Hintergrund Frameworks wie .NET agieren und man nicht gerade die Bibliothek mit all ihren Erweiterungen auswendig kennt, dann gestaltet sich die Entwicklung mit einem einfachen Editor allerdings mehr als nur mühselig. Und wer auch nur einmal mit IntelliSense gearbeitet hat, der möchte darauf nicht mehr verzichten.
Wie wäre es also, wenn man dieses und weitere Features einfach in einen Editor seines Vertrauens integrieren und somit die Funktionen dieses Editors weiterhin nutzen könnte?
Das Projekt OmniSharp macht dies möglich, und das alles unter der gewohnten Umgebung, ganz gleich ob Windows, Mac OS X oder GNU/Linux.
Entstehung
Die ursprüngliche Gründung des Projekts geht auf Jason Imison zurück, welcher als Freund des Editors vim gilt und diesen um C#-Funktionalitäten erweitern wollte. Aus der ursprünglichen Intention entwickelte sich schließlich ein offenes Projekt mit weiteren Entwicklern, darunter auch bekannte Namen aus dem Hause Microsoft. Bei OmniSharp handelt es sich um ein von der Community geführtes Projekt, und es steht jedem Interessierten frei, sich an der Weiterentwicklung zu beteiligen.
Auch Veränderungen bei der verwendeten Technologie kamen mit der Zeit daher. Während für die ursprüngliche Version noch Mono genutzt wurde, um die plattformunabhängige Funktionalität zu gewährleisten, wurde dies später durch .NET Core [1] ersetzt. Somit setzt die aktuelle Version von OmniSharp auf den .NET-Compiler Roslyn [2], welcher für die Auswertung des Codes weitaus mehr Möglichkeiten durch Erweiterungen bietet als die bis dato genutzte Codeanalyse auf Basis von NRefactory.
Projekt OmniSharp
Handelt es sich bei OmniSharp jetzt um ein Plug-in für den jeweiligen Editor? Nicht ganz. OmniSharp selbst umfasst eine Lösung, welche sich aus den verschiedenen Erweiterungen der Editoren und Toolsets zusammensetzt. Zu den Kernkomponenten zählt allen voran der Backend-Dienst OmniSharp-Roslyn, welcher, wie der Name schon vermuten lässt, auf Roslyn, .NET Core wie auch WebApi basiert. Hierbei handelt es sich quasi um den Nachfolger von OmniSharpServer, der noch auf NRefactory, Nancy und Mono basierte. In beiden Fällen handelt es sich um einen HTTP-Dienst, der im Hintergrund läuft und die Eingaben aus den Editoren entgegennimmt.
Der Dienst ist also ein Wrapper um Roslyn beziehungsweise NRefactory, welcher die Eingaben verarbeitet und dem Editor dann in einer aufbereiteten Form wieder zur Verfügung stellt.
Eine weitere Kernkomponente des Projekts stellt die Integration der C#-Sprachfunktionalitäten in die jeweiligen Editoren bereit. Zum jetzigen Zeitpunkt werden von offizieller Seite aus die Editoren Atom, Brackets, Emacs, Sublime Text, vim sowie Visual Studio Code offiziell unterstützt. Weitere Editoren werden sicherlich mit der Zeit folgen, und wenn der eigene Editor fehlt, kann man dessen Unterstützung aufgrund der Open-Source-Natur des Projekts einbringen.
Zusätzlich gibt es noch yo aus dem Projekt yeoman, welches für den Bau der Grundgerüste der jeweiligen Projekttypen eingesetzt wird. Schließlich möchte man die Struktur eines MVC-Projekts nicht immer von Hand anlegen, allein schon um Zeit einzusparen und Fehler zu vermeiden. Doch dazu später mehr.
Integration unter Sublime Text
Im folgenden Beispiel wird die Integration in Sublime Text gezeigt, welches kostenlos von der Herstellerseite [3] geladen und testweise genutzt werden kann. Für die weitere Verwendung ist aber eine kostenpflichtige Lizenz erforderlich.
Den Editor gibt es für die Plattformen Windows, Mac OS X und GNU/Linux. Was die Integration für weitere Editoren angeht, so gibt es auf der Projektseite von OmniSharp auf GitHub [4] eine kurze Beschreibung zur Installation und Konfiguration der jeweiligen Editoren. Für weitere Details bietet sich dann die Dokumentation der betreffenden Erweiterung an.
Installation & Konfiguration
Um die OmniSharp-Funktionalitäten in Sublime Text nutzen zu können, müssen im ersten Schritt verschiedene Komponenten mithilfe des Paketmanagers Package Control installiert werden. Falls Package Control noch nicht installiert ist, so lässt sich das mit dem Snippet aus Listing 1 in der integrierten Konsole (View | Show Console) oder mit einer manuellen Installation [5] nachholen.
Im Anschluss kann innerhalb von Sublime die Kommandopalette (CP) durch die Tastenkombination [STRG] + [SHIFT]+ [P] geöffnet werden. Dort navigiert man zum Punkt PackageControl: Install Package, welches die verfügbaren Pakete…