Gestire le librerie con NuGet. Package reference e Package Console

Nel precedente post ho fatto una breve introduzione a NuGet e alla sua installazione in Visual Studio 2010.

In questo post entro invece più in dettaglio sulla gestione dei package e su cosa avviene dietro le quinte.

La gestione dei package con NuGet

Per prima cosa per utilizzare tutti i comandi di NuGet è necessario che sia aperta una soluzione.

Nell’esempio ho creato una web application con nome NuGetTest.

A questo punto per installare, modificare o eliminare un package è possibile:

  • Utilizzare il menù contestuale “Add library package reference” nel progetto
  • Utilizzare la console “Package Manager Console” PowerShell

Gestire i package dalla finestra Add library package reference

La finestra “Add library package reference” è accessibile dal menù contestuale di ogni progetto.

Il suo contenuto e funzionamento è simile all’Extension manager di Visual Studio.

E’ possibile:

  • Cercare un package online
  • Installare un package
  • Visualizzare i package installati
  • Aggiornare un package a una nuova versione
  • Rimuovere un package installato

Vediamo alcuni esempi concreti.

Esempio: aggiungere log4net tramite il library package reference

add library package reference

Nell’esempio ho scelto log4net

Add library package reference window

Premendo “Install” viene scaricato ed installato il package. Il risultato è il seguente:

    1. Viene creata una cartella packages nella root della soluzione
    2. Viene aggiunta una reference alla DLL

log4net reference

  1. Viene creato il file Packages.config nella root dell’applicazione

Packages.config

Dato che tutta la configurazione dei package installati è su file system all’interno della soluzione si ha immediatamente il vantaggio che è condivisa all’interno del sistema di versionamento (TFS, Subversion o Git ad esempio).

Rimuovere e aggiornare i package dalla finestra Library Package Reference

Dalla finestra Library Package Reference è possibile anche disinstallare un package oppure aggiornarlo a una nuova versione.

Ad esempio per rimuovere log4net è sufficiente visualizzare tutti i package installati e premere uninstall.

uninstall-log4net-from-library-package-reference

Anche l’aggiornamento di un package si fa con un paio di click. Si seleziona Updates e se sono disponibili degli aggiornamenti per un package installato è sufficiente premere Update.

Nell’esempio è stato installato il package NHibernate in versione beta. Nell’elenco degli updates compare la versione definitiva di NHibernate 3.

update-nhibernate-from-library-package-reference

L’aggiornamento provvede automaticamente a rimuovere la vecchia libreria e a referenziare la nuova.

Gestire i package tramite la Package Manager Console

La package manager console è lo strumento più potente e flessibile per gestire i package.

Da riga di comando è possibile ad esempio scegliere la versione da installare oppure disinstallare un package forzando o no la rimozione dei package da cui dipende (solo se non utilizzati da altri package).

Digitando il comando

get-help about_NuGet

viene mostrato l’elenco dei comandi disponibili.

La guida completa è anche online su CodePlex a questo indirizzo:

http://nuget.codeplex.com/documentation?title=Package%20Manager%20Console%20Command%20Reference

Esempio: aggiungere NHibernate tramite la Package Console

Digitare il comando get-package. Viene visualizzato l’elenco dei package attualmente installati:

get-package log4net

Il comando get-package –remote visualizza l’elenco dei package disponibili nel feed corrente (ricordo che di default si tratta del NuGet official package source).

Al momento in cui scrivo si ottiene una lista di circa 1000 package. E’ possibile filtrare la lista con l’opzione filter.

Ad esempio con il comando

get-package –remote –filter nhibernate

si ottiene la lista di tutti i package con nhibernate nel nome o nella descrizione:

get-package filter nhibernate

A questo punto per installare il package NHibernate eseguire il comando:

install-package NHibernate

NB: il progetto in cui viene installato il package è quello selezionato nel menù a tendina “Default Project” nella console.

install-package nhibernate

In questo caso va notato che il package di NHibernate ha 3 dipendenze:

  • Iesi.Collections
  • Antlr
  • Castle.Core

e per ogni dipendenza è specificata la versione minima necessaria.

NuGet si accorge che le dipendenze non sono ancora installate e provvede automaticamente a scaricarle, installarle e configurarle.

A questo punto nella soluzione sono state aggiunte le nuove reference:

nhibernate reference

Viene inoltre aggiornato il file packages.config e la cartella packages nella root della soluzione:

Packages.config nhibernate

packages folder nhibernate

Esempio: installare ELMAH

Eseguire adesso il comando

install-package elmah

In questo caso oltre alla solita configurazione delle reference è necessario modificare il web.config.

NuGet aggiunge in automatico una nuova configSection nel web.config

elmah configsections

e configura i necessari httpmodules e httphandler:

elmah httpmodule httphandler

Da notare che la configurazione è stata fatta correttamente sia per IIS 6 che per IIS 7.

Esempio: disinstallare ELMAH

Per disinstallare un package è sufficiente eseguire il comando:

uninistall-package

Ad esempio il comando uninstall-package ELMAH esegue in automatico questi passi:

–          Rimuove la reference dal progetto

–          Ripulisce il file web.config

–          Rimuove l’entry dal file di configurazione package.config

–          Rimuove la libreria dalla cartella packages

Aggiornare un package dalla Package Console

L’aggiornamento di un package dalla Package Console avviene con il comando:

update-package nomepackage

Ad esempio installando NHibernate in versione beta ed eseguendo il comando

update-package nhibernate

viene rimossa completamente la vecchia versione ed installata la nuova.

update-nhibernate-from-package-console

Riferimenti

CodePlex: http://nuget.codeplex.com/

Elenco dei comandi da console:
http://nuget.codeplex.com/documentation?title=Package%20Manager%20Console%20Command%20Reference

Phil Haack blog: http://haacked.com/tags/NuGet/default.aspx

Share

2 thoughts on “Gestire le librerie con NuGet. Package reference e Package Console”

Leave a Reply

Your email address will not be published. Required fields are marked *