Zum Inhalt springen

A New Hello, World!

September 29, 2015

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.

Hello, World!

Hello, World!

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):

dnvm list

dnvm list

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

Kommentar verfassen

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit deinem WordPress.com-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

%d Bloggern gefällt das: