NuGet – system dystrybucji bibliotek
Autor: Piotr Zieliński
Opublikowano: 2011-06-22
Wprowadzenie
NuGet jest rozszerzeniem do Visual Studio ułatwiającym zarządzanie referencjami do bibliotek (tzw. system zarządzania pakietami). Dzisiaj wykorzystanie obcej biblioteki może być dosyć kłopotliwe i czasochłonne, ponieważ należy najpierw ściągnąć odpowiednią bibliotekę, rozpakować, dodać stosowne referencje oraz zaktualizować plik konfiguracyjny (jeśli to konieczne). Ponadto, jeśli biblioteka jest zależna od innych bibliotek, problem się jeszcze bardziej komplikuje. Dzięki NuGet wystarczy, że wybierzemy bibliotekę, którą chcemy wykorzystać (z dostępnej galerii), a wszystkie pozostałe czynności – takie jak modyfikacja pliku konfiguracyjnego czy dodanie stosownych referencji – zostaną wykonane za nas. Jeśli następnie zdecydujemy się usunąć bibliotekę, wszelkie modyfikacje również zostaną cofnięte. Ponadto istnieje możliwość korzystania z własnej galerii pakietów – np. wewnątrz firmy można pokusić się o korporacyjną galerię.
Instalacja
Jeśli rozszerzenie NuGet jest zainstalowane, wtedy w menu głównym Tools powinna istnieć opcja Library Package Manager:
Jeśli nie ma takiej opcji, należy zainstalować NuGet za pomocą Extensions Manager (Tools -> Extensions Manager). Proces instalacji sprowadza się do wyszukania NuGet w Extensions Manager i postępowania zgodnie z instrukcjami – rozszerzenie zostanie zainstalowane automatycznie przez Visual Studio.
Dodanie pierwszego pakietu
Spróbujmy zainstalować pakiet ELMAH – bibliotekę przeznaczoną dla aplikacji ASP.NET odpowiedzialną za wykonywanie logów. W standardowym podejściu ściągnęlibyśmy wymagane pliki i z menu kontekstowego Visual Studio wybralibyśmy opcję Add Reference. Jeśli chcemy skorzystać z NuGet, klikamy na Add Library Package Reference:
W oknie przechodzimy do wyszukiwania pakietów online i klikamy w przycisk Install dla pakietu ELMAH.
Po instalacji warto zaobserwować kilka modyfikacji:
dodana została referencja do biblioteki:
zmodyfikowany został plik web.config:
<sectionGroup name="elmah">
<section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
<section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
<section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
<section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
</sectionGroup>
- został utworzony nowy folder packages zawierający zainstalowane pakiety. W folderze można również znaleźć samą paczkę instalacyjną – jest to plik o rozszerzeniu .nupkg (tak naprawdę to archiwum zip).
Elmah został automatycznie skonfigurowany. Po uruchomieniu strony można się o tym przekonać, wpisując stosowny adres:
W analogiczny sposób można aktualizować i usuwać pakiety. Po usunięciu wszelkie zmiany (np. w pliku konfiguracyjnym) zostaną cofnięte.
Warto również wspomnieć, że istnieje możliwość instalacji pakietów z poziomu konsoli. W tym celu należy ją najpierw uruchomić z menu Tools -> Library Package Manager -> Package Manager Console.
Wpisując polecenie get-package –remote uzyskamy listę wszystkich pakietów.
Można również wyszukiwać pakiety zgodnie z filtrem, np.:
get-package –remote –filter elmah
Aby zainstalować pakiet, wystarczy wpisać:
install-package elmah
Hostowanie własnych pakietów
Oczywiście istnieje również możliwość hostowania własnych pakietów. Dokładny opis tworzenia pakietów znajduje się w dokumentacji. W tym artykule przyjrzymy się jedynie sposobom ich publikacji.
Najpierw zobaczmy, jak umieścić pakiety na lokalnej maszynie:
- Tworzymy folder na dysku i umieszczamy w nim dane pakietu (pliki o rozszerzeniu .nupkg file).
- Przechodzimy do okna ustawień – Tools->Library Package Manager -> Package Manager Settings.
- Wpisujemy nazwę źródła oraz lokalną ścieżkę do wcześniej utworzonego folderu, a następnie klikamy w przycisk Add.
W oknie instalacji pakietów jest teraz widoczne nowe źródło:
Rozwiązanie to ma jednak wady i jest mało praktyczne dla zespołów programistycznych. W firmach oczywiście dużo lepszym podejściem jest stworzenie zdalnego źródła pakietów. NuGet również to umożliwia za pomocą specjalnej aplikacji:
- Ściągamy aplikację server odpowiedzialną za udostępnianie pakietów NuGet. Po ściągnięciu przekonamy się, że jest to zwykła aplikacja ASP.NET MVC 2.0. Hostujemy ją w IIS.
- Pakiety, które chcemy udostępnić, umieszczamy w folderze ~/Packages.
Następnie wystarczy, tak jak w poprzednich krokach, dodać ścieżkę (URL) do umieszczonej przed chwilą aplikacji ASP.NET MVC.
Zakończenie
NuGet stanowi wygodny sposób dystrybucji bibliotek w .NET. Dzięki NuGet, programiści mają ułatwione zadanie związane z konfiguracją biblioteki. Możliwość tworzenia własnych serwerów udostępniających pakiety jest doskonałym rozwiązaniem dla zespołów programistów – umożliwia stworzenie np. galerii korporacyjnej zawierającej biblioteki wykorzystywane w danej sekcji firmy.