Um mit ASP.NET 5 zu entwickeln ist nicht zwingend die kostenpflichtige Variante von Visual Studio notwendig. Mit Visual Studio Code, der kostenpflichtigen und plattformunabhängigen Variante, kommt ein interessantes Tool ins Spiel. Aber sieh selbst.

Nachdem ich aktuell gerade an Visual Studio Code dran bin, dachte ich mir, dass ich im Zuge dessen auch gleich einen Blick auf ASP.NET 5 werfe – und natürlich in Verbindung mit VS Code.

Installation

Es wird vorausgesetzt, dass sowohl Node.js, als auch Visual Studio Code installiert sind. Im nächsten Schritt wird Yeoman und ein entsprechender Generator für ASP.NET 5 installiert.

npm install -g yo generator-aspnet

Danach kann im gewünschten Verzeichnis das Grundgerüst eines ASP.NET 5-Projektes angelegt werden. Dies geschieht mit dem nachfolgenden Aufruf:

yo aspnet
Yeoman und ASP.NET 5 Generator

Yeoman und ASP.NET 5 Generator

Nun sollen alle NuGet Pakete installiert werden. Dies kann in der Commandline mit dem Befehl dnu restore ausgeführt werden. Alternativ ist unter Visual Studio Code aus der Command Palette der Befehl dnx: Restore Packages auszuführen.

Kleiner Tipp am Rande: Aus der Commandline kann der gesamte Ordner via code . im Visual Studio Code geöffnet werden.

Mittels dnx build kann gleich mal gebuildet und somit überprüft werde, ob auch tatsächlich alles korrekt abgelaufen ist. Zu guter Letzt ist mit dnx web der Webserver zu starten.

ASP.NET 5 und Visual Studio Code

Wer hat nicht schon einmal beim committen neuer Dateien vergessen, das veränderte Projekt-File in das Changeset mit aufzunehmen und dann hat es gleich einmal den Checkin-Build zerlegt? Das gehört der Vergangenheit an. In dieser Umgebung haben wir die bekannten SLN und CSPROJ-Dateien nicht mehr. Das Projekt selbst besitzt eine Datei project.json. Darin werden zahlreiche Informationen á la Version, Abhängigkeiten, unterstützte Frameworks etc. verwaltet.

Nun haben wir aber auch keine voll ausgebildete IDE (wie wir das von Visual Studio kennen). Wie funktioniert das nun mit C#?

Das Herzstück wird durch OmniSharp gebildet. Dieses Projekt gibt es schon länger und hat sich zum Ziel gemacht, .NET-Entwicklung in den gängigen Editoren zu unterstützen. Ich bin damit vor einigen Jahren mit VIM in Berührung gekommen und war damals schon recht positiv von diesem Projekt angetan.

Angefangen von Hinweisen zu unnötigen Usings, bis hin zur Code-Vervollständigung ist alles Notwendige enthalten und lässt die Arbeit recht einfach von der Hand gehen.

OmniSharp Codevervollständigung

OmniSharp Codevervollständigung

Der einzige Nachteil zum aktuellen Zeitpunkt: Debugging ist noch nicht möglich, wird aber wohl in nächster Zeit zu erwarten sein.

Commands

Bereits oben gab es den Hinweis auf das Kommando dnx web. Dieser Befehl spiegelt sich eigentlich durch die definierten Kommandos in der Datei project.json wider.

In meinem Fall habe ich eine Web API Application angelegt. In der project.json findet sich unter commands folgender Eintrag:

"commands": {
    "web": "Microsoft.AspNet.Server.Kestrel"
}

Dies ist genau das Kommando, welches mit dnx aufgerufen wurde und auch angezeigt wird, wenn mittels F1 die Command Palette geöffnet und dnx: Run command eingegeben wird. In diesem Fall wird Kestrel gestartet. Dieser sucht nach einer Klasse vom Typ Startup, instanziert sie und führt sich anschließend aus.

Analog zu diesem Kommando können weitere angegeben werden und stehen anschließend über die Commandline bzw. über die Command Palette zur Verfügung.

Fazit

Der Start ging schon sehr flott und einfach von der Hand, aber es gibt noch Vieles zu lernen und in Erfahrung zu bringen. Auf jeden Fall bin ich positiv überrascht, wie wenig Steine einem zumindest am Anfang in den Weg gelegt werden. Weitere Berichte über Fortschritte und Erfahrungen werden folgen.

Über den Autor

Norbert Eder

Ich bin ein leidenschaftlicher Softwareentwickler und Fotograf. Mein Wissen und meine Gedanken teile ich nicht nur hier im Blog, sondern auch in Fachartikeln und Büchern.

7 Kommentare

  • Hi,

    Ich bin zwar auch leidenschaftlicher .NET Entwickler und entwickler mit VS 2015 und ich sehe zumindest für mich keinen Grund warum ich VS Code versenden sollte oder habe ich da was übersehen?

    Ich habe VS Code zwar auch bei mir lokal installiert aber so richtig warm geworden bin ich damit nicht, denn das kann VS selbst alles bereits „besser“ ohne 1000 Hilfsmittel. Daher bin ich aktuell der Meinung wenn man bereits mit VS arbeitet hat man doch keinen Grund auf VS Code umzusteigen oder?

    MFG
    SquadWuschel

    • Ich denke, das muss man für sich selbst entscheiden. Ich hatte, als es raus kam, https://atom.io/ verwendet. Dieses setzte ja auf die Atom Shell auf. Heute heißt das Electron (http://electron.atom.io/). Visual Studio Code setzt auch genau darauf auf. Mit Atom wurde ich nicht warm. Da ich aber etwas leichtgewichtigeres als Visual Studio suchte (eben hauptsächlich für Node.js und Web) landete ich dann jedoch bei WebStorm (https://www.jetbrains.com/webstorm/). Das hatte ich lange Zeit verwendet, aber auch da gibt es nicht nur positive Erfahrungen. Im Zuge einiger einschlägigen Entwicklungen habe ich aber Visual Studio Code eine Chance gegeben und dieses Mal passt es für mich.

      Gerade für die schnell, leichtgewichtige Entwicklung ist das Tool sehr fein und werde ich wohl dem schwergewichtigen Visual Studio zumindest in den angesprochenen Bereichen Node.js und Web vorziehen. ASP.NET 5 kann man machen, ohne Debugger ist das vielleicht manchmal etwas doof, aber da wird sich sicher etwas entwickeln.

      Interessant ist natürlich die Möglichkeit, VS Code sehr einfach mit einer Extension zu erweitern (wie auch Atom). Davon gibt es ja schon zahlreiche (diverse Linter etc.). So ganz ablehnen würde ich VS Code also nicht.

  • Hi. Ich versuche mich auch gerade daran, scheitere allerdings schon am „dnu restore“ Befehl. Scheinbar lässt sich das nicht so einfach installieren.
    Auch finde ich keine sinnvolle Beschreibung wie man den OmniSharp Server installieren kann, nur den SourceCode, der aber im Projekt „ICSharpCode.NRefactory.CSharp.Refactoring“ nicht kompiliert.

    Da frage ich mich schon, warum ich mich mit einer unnötig komplizierten Umgebung rumschlagen soll.

      • Ich sitze an einer Win7 Maschine und im cmd sind die dnx und dnu befehle nicht verfügbar (auch nach Neustart). So bleibt nur die Command Palette im VSCode, die allerdings auch schon ein Problem hat beim dnx: Restore Packages. Bekomme da gerade die Fehlermeldung „TypeError: Path must be a string. Received null“.
        > Hast du da ein Tipp für mich? Das Web gib nicht wirklich viel her. Habe mich schon durch diverse Posts und Tuts durchgearbeitet.

        Dass OmniSharp im VSCode dabei ist, habe ich auch gerade bemerkt :)

        Es ist schon alles nicht trivial, auch nicht mit VSCode. Gerade die stark config-file abhängige und Fehleranfällige Konfiguration erinnert mich stark an alte Slackware Zeiten zurück.

      • Gerade schon hier https://github.com/aspnet/Home scheitert bei mir am „dnvm upgrade“.
        Bekomme nur:
        Determining latest version
        Invoke-Command : Unable to find any runtime packages on the feed!
        Bei C:\Program Files\Microsoft DNX\Dnvm\dnvm.ps1:1451 Zeichen:27
        + Invoke-Command <<<< ([ScriptBlock]::Create("dnvm-$cmd $cmdargs"))
        + CategoryInfo : OperationStopped: (Unable to find …es on the feed!:String) [Invoke-Command], RuntimeEx
        ception
        + FullyQualifiedErrorId : Unable to find any runtime packages on the feed!,Microsoft.PowerShell.Commands.InvokeCom
        mandCommand

Hinterlasse einen Kommentar