• 20 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 10/03/2017

Utilisez le gestionnaire de package NuGet

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Pouvoir se créer des bibliothèques réutilisables est une grande force du .NET. Nous avons déjà vu plusieurs façons de référencer une assembly du framework .NET :

Nous pouvons également référencer des assemblys directement depuis le disque dur ; cela peut-être utile par exemple quand on nous fournit directement une bibliothèque. Par exemple, un collègue qui a fait du travail de son côté et que nous voulons pouvoir utiliser, voire pourquoi pas un composant trouvé sur Internet, qu'il soit gratuit ou payant...

Et pour faciliter ce type d’échange, en 2010 est apparu un gestionnaire de bibliothèques externes :  NuGet. On l'appelle également un gestionnaire de package, package que l'on peut traduire éventuellement en progiciel. NuGet est gratuit et open source, et est fourni en tant qu'extension de Visual Studio. Il est très facile à utiliser, et très pratique quand on a besoin de manipuler des bibliothèques tierces, et notamment des projets de communauté.

Je vous en parle car il est incontournable et vous sera utile dans de nombreux développements. Son but principal est de permettre d'accéder à une large bibliothèque de composants, regroupés à un seul endroit. Mais il faut savoir qu'il simplifie également la gestion des mises à jour de ces bibliothèques ainsi que de leurs dépendances - des tâches toutes fastidieuses que cet outil automatise pour nous.
Je n'en parlerai pas ici, mais sachez que vous pouvez aussi utiliser NuGet au sein d’une entreprise, pour gérer de manière automatique les dépendances d’un projet par rapport aux composants d’un système d’information. Grosso modo, vous pouvez vous servir de NuGet en entreprise pour publier vos bibliothèques afin qu'elles soient facilement utilisables par vos collègues.

Référencer une assembly

Pour utiliser NuGet, rien de plus simple. Dans Visual Studio, faites un clic-droit sur référence et sélectionner Gérer les packages NuGet  :

Gestion des packages NuGet
Gestion des packages NuGet

Nous pouvons aller trouver des packages en ligne, voyez par exemple ici les plus téléchargés :

Les packages NuGet les plus téléchargés
Les packages NuGet les plus téléchargés

On y retrouve l'incontournable Entity Framework, qui est un ORM facilitant l'accès à une base de données.

On peut voir également un framework populaire permettant de gérer le JSON, s'appelant JSON.NET.

Bon, c'est bien beau tout ça, mais je sais bien que vous n'allez pas me croire sur parole et qu'il vous faut une petite démo. Alors on va se choisir un petit package NuGet au hasard histoire de voir ce qu'il se passe.
Premièrement, regardons ce qu'il y a comme références dans notre projet :

Les références de notre projet
Les références de notre projet

Puis ajoutons un package NuGet avec un clic-droit et en choisissant Gérer les packages NuGet  :

Gérer les packages NuGet
Gérer les packages NuGet

Alors, allons rechercher en ligne de quoi faire des petits calculs mathématiques. Tapez math dans la recherche, et choisissez le package AForge par exemple, que ni moi ni vous ne connaissons a priori :

Recherche d'un package en ligne
Recherche d'un package en ligne

Cliquez sur installer, on voit qu'il se passe des choses ...

NuGet ajoute les dépendances à la bibliothèque
NuGet ajoute les dépendances à la bibliothèque

Regardons maintenant à nouveau les références et nous pouvons voir deux nouvelles assemblies référencées :

De nouvelles assemblies ont été référencées
Deux nouvelles assemblies ont été référencées

Ces assemblies ont été automatiquement récupérées depuis le dépôt de NuGet, puis copiées dans le répertoire "packages" de votre projet (ce comportement par défaut peut se changer avec un fichier de configuration particulier).

Allez, pour le plaisir, on va utiliser une méthode permettant de savoir si un nombre est une puissance de deux, avec le code suivant :

for (int i = 0; i < 10000; i++)
{
    if (AForge.Math.Tools.IsPowerOf2(i))
        Console.WriteLine(i + " est une puissance de 2");
}

Et nous aurons :

Les puissances de 2 de 0 à 10000
Les puissances de 2 de 0 à 10000

Bon, j'avoue que ce package ne va pas nous servir à grand chose. Nous utiliserons un autre package un peu plus loin dans le cours, Moq, qui va nous servir lorsque nous ferons des tests unitaires.

Le site web NuGet

NuGet, c'est aussi un site web, accessible à cet emplacement. On y retrouve un peu la même chose que dans Visual Studio, il est possible de rechercher un package en ligne ou de voir des statistiques sur les packages les plus téléchargés.

Des statistiques sur le site NuGet
Des statistiques sur le site NuGet

Voyez par exemple sur le mois de novembre 2014, plus de 24 millions de packages ont été téléchargés ... :waw:

Nous avons aussi des infos sur les packages. Voyons par exemple la page de la dernière version stable en date de JSON.NET (mars 2015) :

Des infos sur le package JSON.NET
Des infos sur le package JSON.NET

Nous avons des liens vers le site web de l'auteur, des infos sur l'auteur, le nombre de téléchargement, les différentes versions existantes (plus bas dans la page) ...

Et aussi, une ligne de commande !

NuGet en mode console

 La transition est toute trouvée pour vous parler de NuGet en mode console, utilisable avec PowerShell.

Pour voir cette console, allez dans le menu OUTILS , puis Gestionnaire de package Nuget , puis Console du Gestionnaire de package  :

Afficher la console NuGet
Afficher la console NuGet

Une fenêtre s'ouvre en bas et nous pouvons effectuer des opérations en ligne de commande, la plus connue étant l'installation de package.

Tapez Install-Package  et commencez à taper Newtonsoft, puis tapez sur Tab. Nous pouvez voir la complétion automatique qui est allée faire une recherche en ligne du package. Vous n'aurez plus qu'à valider pour installer le package. Mais pour la démonstration, tapons plutôt la ligne de commande :

Install-Package Newtonsoft.Json -Version 5.0.8

J'ai trouvé cette ligne de commande dans la documentation en ligne, permettant d'installer la version 5.0.8, d'octobre 2013.

Nous pouvons voir qu'il se produit la même chose que dans l'interface de Visual Studio :

Installation d'un package en ligne de commande
Installation d'un package en ligne de commande

Mettre à jour ses références

Un des autres intérêts à NuGet est qu'il nous permet de mettre à jour nos références si l'on souhaite bénéficier des nouvelles versions facilement.

Ca tombe bien, nous avons justement installé une vieille version de JSON.NET ; faites un clic-droit sur les références et choisissez à nouveau de Gérer les packages NuGet  :

Mettre à jour un package NuGet
Mettre à jour un package NuGet

Nous pouvons voir à gauche qu'il y a un onglet Mises à jour , et que dedans il nous propose de mettre à jour le package JSON.NET.

Et voilà, en un clic, nous avons la possibilité de mettre à jour notre version, et ainsi bénéficier des dernières nouveautés.

Bon, je m'arrête là pour NuGet, car vous avez tout ce qu'il vous faut pour votre apprentissage actuel.

En résumé

  • NuGet est un gestionnaire de package permettant de faciliter la gestion des références externes de notre projet ;

  • NuGet est utilisable également en mode console.

Maintenant que vous savez (presque) tout sur NuGet, il est temps que vous découvriez comment est gérée la mémoire par le framework .NET et comment formater efficacement vos données.

Exemple de certificat de réussite
Exemple de certificat de réussite