A New Hello, World!
Erstmals seit der ersten Version von C# hat sich mit C# 6 das „Hello, World!“ Programm geändert. Das und Command Line Tools für das neue .NET Execution Environment in diesem Blog Artikel.
Ein neues Hello World? Wie sieht das aus?
using static System.Console; public class Program { public void Main() { WriteLine("Hello, World!"); } }
Dass die Console Klasse weggelassen werden kann fällt sicher gleich auf. using static ist ein neues C# 6 Sprachenkonstrukt mit dem es möglich ist static Methoden ohne Klassennamen aufzurufen.
using static ist eines der vielen neuen C# 6 Features. Was in dem Beispiel aber noch viel essentieller ist – die Main Methode ist nicht mehr static. Das ist ein Vorteil vom neuen Build Environment.
Kompiliert man das Programm wie bisher mit csc, gibt es einen Compiler-Fehler: die Program Klasse beinhaltet keine static Main Methode. Jetzt gibt es aber auch ein neues .NET Execution Environment:
- DNVM, .NET Version Manager
- DNU, .NET Development Utility
- DNX, .NET Execution Environment
DNVM wird mit Visual Studio 2015 installiert. Sollte Visual Studio 2015 nicht installiert sein lässt sich DNVM auch per Powershell Script installieren:
&{$Branch='dev';iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.ps1'))}
Welche Versionen der Runtimes installiert sind kann man mit dnvm sehen:
dnvm list
Auf meinem aktuell installierten System gibt es seit Beta 5 alle Versionen (die älteren sind schon gelöscht):
Mit
dnvm install -r clr latest -u
lässt sich die letzte Version der Runtime installieren. Die Option -r wählt die .NET (clr) oder .NET Core CLR (coreclr) Runtime. Die Option -u erlaubt auch unstable Versionen.
Die Programmdatei sollte sich jetzt auch noch in einem speziellen Verzeichnis befinden, z.B. dem Verzeichnis hello.
Für DNX und DNU ist noch ein project.json File erforderlich. .NET 4.6 inkludiert die Console Klasse mit dem mscorlib Assembly. Da die Console Klasse tatsächlich in vielen Applikationen nicht benötigt wird ist sie bei .NET Core im NuGet Package System.Console das extra referenziert werden muss:
{ "version": "1.0.0-*", "description": "Hello World Sample", "authors": [ "Christian Nagel" ], "tags": [ "" ], "projectUrl": "", "licenseUrl": "", "dependencies": { }, "commands": { "hello": "hello" }, "frameworks": { "dnx46": { }, "dnxcore50": { "dependencies": { "Microsoft.CSharp": "4.0.1-beta-23225", "System.Console": "4.0.0-beta-23225" } } } }
Jetzt können die Referenzen restored werden:
dnu restore
Und die Applikation kompiliert:
dnx build
Im bin/debug Verzeichnis sind jetzt Libraries für .NET Core und .NET 4.6 zu finden. Starten lässt sich die Applikation über
dnx run
Eine weitere Möglichkeit zum Starten ist der Command aus dem project.json File:
dnx hello
Welche Version der Runtime jetzt verwendet wird sieht man mit
dnx --version
Zum Umschalten der default Runtime hilft dnvm use:
dnvm use -r clr -arch x86 -version 1.0.0-beta8-15736
Weitere Informationen zum .NET Execution Environment gibt es bei meinem Workshop Take off to .NET 2015 als auch im kommenden Buch Professional C# 6.
Christian
CN innovation