Přejít k navigační liště

Zdroják » Různé » Nuget: inteligentná správa používaných knižníc

Nuget: inteligentná správa používaných knižníc

Články Různé

Ak pracujete na aspoň trochu rozsiahlejších projektoch, určite sa nevyhnete používaniu cudzích knižníc. Či už ide o open-source, komerčné alebo vlastné knižnice, princíp ich použitia je vždy rovnaký. Knižnicu treba nájsť, stiahnuť správnu verziu, rozbaliť, nalinkovať do projektu, nakonfigurovať. Našťastie existuje Nuget, ktorý vykoná všetky tieto operácie za vás.

Nuget je open-source balíčkovací systém pre platformu .NET zameraný na vývojárov. Môžete si ho stiahnuť ako rozšírenie do Visual Studia, funguje dokonca aj s Express verziami. Pokročilí používatelia ocenia ovládanie z Power Shellu.

Inštalácia knižníc

Po inštalácií Nugetu vám vo Visual Studiu pribudne v kontextovom menu referencií voľba Add Library Package Reference, pomocou ktorej sa dostanete do Nuget galérie. Nuget galéria je niečo ako katalóg rozšírení (prístupný aj cez webové rozhranie na http://nuget.org ). V tomto katalógu môžete knižnice vyhľadávať. Knižnicu nainštalujete kliknutím na tlačidlo Install.

Inštalácie cez grafické rozhranie

Inštalácia knižníc cez grafické rozhranie

Správa knižníc

Jednou z hlavných výhod Nugetu je, že ak cez Nuget nainštalujete nejakú knižnicu, nainštaluje sa vrátane všetkých závislostí. Nemusíte teda zdĺhavo skúmať závislosti knižnice, ktorú chcete použiť a postupne ich inštalovať, Nuget stiahne všetko za vás.

Nuget zvládne aj konfiguráciu stiahnutých knižníc, napríklad zápis do web.config. Ďalšou výhodou je možnosť jednoduchej aktualizácie používaných knižníc. Na aktualizáciu je najlepšie použiť Power Shell, ktorý je dostupný priamo z Visual Studia pomocou voľby Tools | Library Package Manager | Package Manager Console.

Zoznam knižníc, pre ktoré existujú aktualizácie, získate príkazom Get-Package -Updates.

Použitie cez Power Shell

Použitie cez Power Shell

Knižnicu aktualizujete príkazom Update-Package Id, kde ID je identifikátor knižnice. Knižnicu odinštalujete pomocou Uninstall-Package Id.

Použitie vlastných knižníc

Okrem oficiálnej Nuget galérie je možné používať akýkoľvek iný katalóg knižníc. Nemusí byť ani na webe, môže to byť lokálny alebo sieťový adresár. Nuget sa vďaka tomu stáva vhodným nástrojom na distribúciu knižníc v rámci firmy alebo vývojového týmu. Vytvorenie Nuget balíčka nie je nič zložité.

Vytvorenie vlastného balíčka

Na vytvorenie balíčka je potrebné stiahnuť si NuGet.exe. Najjednoduchším spôsobom, ako vytvoriť Nuget balíček, je jeho tvorba priamo z assembly (DLL súbor). Prvým krokom je vytvorenie nuspec súboru príkazom nuget spec MyAssembly.dll. Nuspec súbor je XML súbor popisujúci budúci Nuget balíček. Môžete v ňom vyplniť popis, poznámky, závislosti a pod. Samotná Nuget balíček vytvoríte príkazom nuget pack MyAssembly.nuspec. Výsledkom je súbor s príponou nupkg, ktorý je vlastne zip súborom s presne definovanou štruktúrou.

Pri tvorbe Nuget balíčka priamo z projektu je potrebné zavolať Nuget spec priamo na súboru projektu, napr. nuget pack MyProject.csproj, čím sa vytvorí už spomínaný nuspec súbor. Samotný Nuget balíček vytvoríte pomocou nuget pack MyProject.csproj. Cestu k nuspec súboru nie je potrebné zadávať, Nuget.exe si ho nájde sám. Problémom takto vytvoreného Nuget balíčka je, že berie skompilovanú assembly z predvolenej build konfigurácie, čo je vo väčšine pripadov Debug. Meniť nastavenie projektu nie je vždy vhodné, Nuget.exe naštastie obsahuje prepínač -Prop, pomocou ktorého môžete build konfiguráciu, ktorá sa má použiť, zmeniť. V našom príklade použijete príkaz nuget pack MyProject.csproj -Prop Configuration=Re­lease. Vytvárnie zložitejších Nuget balíčkov s konfiguráciou je dobre opísané v dokumentácii.

Použitie lokálneho repozitára

Ako lokálny repozitár (galéria) je možné použiť akýkoľvek lokálny alebo sieťový adresár. V Nugete tento adresár pridáte pomocou Tools | Library Package Manager | Package Manager Settings | Package Sources. Do tohto adresára už následne len stačí skopírovať nupkg súbory a budú v Nugete k dispozícii.

Vlastný Nuget balíček v lokálnom repozitári

Vlastný Nuget balíček v lokálnom repozitári

Záver

Nuget je skvelý nástroj, ktorý sa určite oplatí vyskúšať. Dokáže vám ušetriť čas a námahu pri používaní rôznych knižníc a s trochou konfigurácie ho môžete používať aj ako silný firemný nástroj.

Komentáře

Subscribe
Upozornit na
guest
6 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
blizz

poznam to, je to dobra vecicka

MartinSura

V článku nebyla zmíněna jedna zajímavá fičura a to je restore package, která byla tuším nativně naimplementována ve verzi nugetu 1.6.

Jde o to, že už se do repozitáře nemusejí commitovat i balíčky(typicky adresář packages), protože při buildu si umí nuget automaticky chybějicí balíčky doinstalovat sám.

jondy

U NuGetu mi vadi to, ze sprava balicku je per project a ne per solution. Teda mozna jsme jen neprisli jak to udelat per solution. Takze se knihovny pro kazdy projekt stahuji a spravuji samostatne, i kdyz jsou pouzivany napric nekolika projekty.

Dalsi problem je v tom, ze NuGet neumoznuje ridit kam se budou knihovny instalovat a odkud linkovat. Takze napr jquery se ma vzdy nacpe do adresare Scripts a to, ze pouzivate adresar js ho nezajima :-)

Aby se vyrovnal jinym spravcum balicku pouzivanym v Jave, Ruby atd., tak se bude jeste muset hodne vylepsit.

MartinSura

Mno, nuget per solution teď přidali tuším v posledním releasu a spravuje se přes Tools > Library Package Manager > Manage NuGet Packages for Solution…

Jinak nemožnost řídit kam se budou knihovy instalovat a linkovat u toho taky trpíme. Takže aktualizace balíčků je skoro neproveditelná. Líbil by se mi dialog, kde by si člověk mohl zaškrtnout jaký soubory z balíčku chce nainstalovat a hlavně kam…

Aleš Roubíček

Kam se mají balíčky stahovat lze nastavit. Není k tomu žádné UI, stačí vytvořit konfigurační soubor nuget.config, který uložíte vedle vašeno sln souboru a do něj vložit toto:

<settings>
<repositoryPat­h>..lib</repo­sitoryPath>
</settings>

MartinSura

Na tohle nastavení sem narazil tuším na SO, ale já měl spíš namysli možnost u konkrétního balíčku (např jquery) si mít možnost zvolit kam se v projektu nainstaluje. Protože výchozí strukturu u mvc projektů /script /content u žádného projektu nedodržujeme.

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.

Pocta C64

Za prvopočátek své programátorské kariéry vděčím počítači Commodore 64. Tehdy jsem genialitu návrhu nemohl docenit. Dnes dokážu lehce nahlédnout pod pokličku. Chtěl bych se o to s vámi podělit a vzdát mu hold.