A NuGet egy remek eszköz arra, hogy az alkalmazásunkat könnyen újrafelhasználható csomagolt osztálykönyvtárakból épÃtsük fel. De mi van akkor, ha nem szeretnénk publikusan közzétenni a csomagunkat, de szeretnénk a NuGet elÅ‘nyeit alkalmazni?
Ebben az esetben létrehozhatunk egy saját privát NuGet feed-et. Erre számos megoldás van. A GitHub és a GitLab is kÃnál megoldásokat NuGet csomagok tárolására, de akár helyi hálózaton keresztül is tárolhatjuk a csomagjainkat. Mindkét megoldásnak megvannak az elÅ‘nyei, de talán a helyi hálózatos megoldás hasznosabb fejlesztÅ‘csapatoknak, amennyiben tényleg az a cél, hogy a csomag tartalma ne kerüljön ki az internetre.
ElsÅ‘ lépésként létre kell hozni egy hálózati megosztást, amit el tudnak érni a csomag felhasználói. Ennek a megosztásnak a jogosultságait érdemes úgy beállÃtani, hogy pár kiválasztott emberen kÃvül csak olvasási jogosultsága legyen a legtöbb felhasználónak.
Ezt követÅ‘en szükség lesz a NuGet parancssoros változatára. Ezt a https://www.nuget.org/downloads cÃmrÅ‘l tudjuk manuálisan letölteni, Powershell segÃtségével pedig az alábbi parancs kiadásával:
Invoke-WebRequest -URI https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -OutFile nuget.exe
Ezt követÅ‘en az alábbi parancs segÃtségével tudjuk a csomagunkat hozzáadni a megosztott mappánkhoz:
nuget add new_package.1.0.0.nupkg -source \\megosztas
A parancs kiadása után nem csak annyi történik, hogy a csomag átmásolódik a \\megosztas mappájába. Emellett egy speciális mappaszerkezet kerül kialakÃtásra, ami az alábbi formátumot követi:
\\megosztas
└─<packageID>
└─<verzió>
├─<packageID>.<version>.nupkg
└─<egyéb fájlok>
Ezt követÅ‘en a feed használatra kész. Egy meglévÅ‘ projekthez feed-nek az alábbi parancs segÃtségével tudjuk hozzáadni:
dotnet nuget add source \\megosztas
Csomagok tükrözése
ElÅ‘fordulhat, hogy a hivatalos NuGet feed-ben elérhetÅ‘ csomagokat szeretnénk tükrözni a gyorsabb elérés vagy redundáns működés érdekében. Ebben az esetben az alábbi parancs segÃtségével tudunk letölteni egy csomagot:
nuget install [csomag] -Version [verzio] -OutputDirectory [mappa]
Ez a megadott verziójú csomagot letölti a megadott mappába. Mivel a csomagok rendelkezhetnek függőségekkel, ezért a letöltéskor a csomag függőségei és azok függőségei is letöltésre kerülnek.
Fontos, hogy a mappa ne a feed megosztott mappája legyen, mert az install parancs letöltéskor más mappa elrendezést alkalmaz, ami nem kompatibilis a feed struktúrával.
A letöltött csomagokat egyesével hozzá tudjuk adni vagy egy lépésben az alábbi parancs segÃtségével:
nuget init [mappa] \\megosztas