.Net Core Beta – Hello world avec Visual Studio Code

Cet article présente la création d’une application console écrite pour le .Net Core sans Visual Studio. L’idée est de mieux comprendre les bases du Framework. Il s’agit d’un simple Hello World exécuté dans une console Windows / Linux ou Mac.

L’article est basé sur le Getting Started officiel qui décrit également comment installer DNX manuellement.
Je vous invite à lire l’article de présentation du .Net Framework pour plus d’informations sur DNX.

Mon environnement d’exécution

J’ai installé Visual Studio 2015 pour avoir le Framework .Net Core d’installé sur Windows 8.1.
J’utilise Visual Studio Code (multi-plateformes) comme éditeur de texte pour avoir un minimum d’intellisence.

Ouvrez une console et tapez la commande :

dnvm list

Le résultat est la liste les runtimes .Net installés sur la machine.

Capture

Sur Windows, je dispose de 4 runtimes sur mon poste :

  • Le CLR (Framework .Net 4.6) pour les applications .Net en x64 et x86.
  • Le Core CRL (.Net Core 5) pour les applications .Net en x64 et x86.

Sur Linux et Max, vous aurez uniquement les runtimes Core CRL.

L’idée est de sélectionner le runtime que nous voulons utiliser dans notre environnement de développement. Nous allons choisir le Core CRL en version 1.0.0-beta5 en architecture x86. La commande « use » nous permet de faire cela avec « -r » pour le nom du runtime, « -arch » pour le type d’architecture et « -p » (optionnel) pour le rendre persistant dans les différentes sessions.

dnvm use 1.0.0-beta5 -r corecrl -arch x86 -p

Création du projet

L’application est assez simple et nécessite peu de code. Il suffit de créer un répertoire et 2 fichiers.

  • Création du dossier « D:\wwwroot\HelloWorldCore » pour mon projet « HelloWorldCore »
  • Le fichier « startup.cs » qui comprendra le code C#
  • Le fichier « project.json » qui décrit le paramétrage du projet

Ouvrir Visual Studio Code en y accédant via le menu contextuel du dossier « HelloWorldCore » ou en ouvrant le dossier directement dans l’application.

vscode

Fichier project.json

Ce fichier remplace l’app.config et est écrit en JSON. Il décrit le paramétrage de notre application.
Le gros avantage de Visual Studio Code est qu’il apporte l’autocomplétion dans ce fichier.

{
   "dependencies": {
     "System.Console": "4.0.0-beta-23019"
   },
   "frameworks": {
     "coreclr":{}
   }
}

La partie « dependencies » correspond aux références vers les librairies que nous utiliserons. Ici, nous ajoutons une référence vers « System.Console » pour écrire dans la console.

La partie « frameworks » décrit les Framework que l’application peut utiliser. Ici, nous utilisons le .Net Core 5. Les valeurs possibles ne sont pas très claires pour le moment, ce site fait un résumé de la situation. Cependant, d’après Visual Studio 2015, les bonnes valeurs semblent être « clr » pour le Framework .Net full et « corecrl » pour le .Net Framework.

Nous venons donc déclaré une application pour console utilisant le .Net Core.

Fichier startup.cs

Ce fichier est un programme console classique écrit en C#.

using System;
namespace HelloWorldCore
{
   public class Program {
     public static void Main(string[] args) {
       Console.WriteLine("Hello World Core CLR !");
     }
   }
}

Ce code fonctionnerait très bien avec le Framework .Net 4.x.

Vous remarquerez que Visual Studio Code râle beaucoup car il ne trouve pas les dépendances vers « System ». Cela est normal car nous lui avons dit d’utiliser la librairie « System.Console », mais il n’a pas connaissance du package, donc il nous le signale ainsi. Vous devez d’ailleurs avoir un bandeau qui s’affiche en haut vous proposant de restaurer les packages. Nous allons le faire dans la partie suivante.

Exécution

J’ai mis les sources à disposition dans le cas où vous n’auriez pas réussi à créer les 2 fichiers 😉

Nous commençons par lancer la commande de récupération des packages. Cela aurait pu être fait dans Visual Studio Codeen cliquant sur le bouton de restauration des packages.

dnu restore

Vous aurez remarqué qu’un fichier « project.lock.json » a été créé. Il contient toutes les informations de description des packages et leurs librairies.

Enfin, nous pouvons lancer notre programme :

dnx . run
Hello World Core CLR !

Et ça marche 🙂
En lançant les mêmes commandes sur un environnement Linux ou Mac, j’aurais exactement le même résultat.

La commande d’exécution prend en paramètre le chemin racine du projet, ici le répertoire local, et la commande à exécuter. Par défaut, il s’agit de « run » mais il est possible de créer ses propres commandes dans le fichier « project.json ». Cela fera l’objet d’un autre article.

 

Publicités