Je hebt een applicatie gebouwd of misschien zelfs een reeks belangrijke scripts, en je moet het inpakken en implementeren. Zoek niet verder dan NuGet en de verschillende NuGet-pakketbeheerders die je tot je beschikking hebt.
In dit artikel leer je hoe je verschillende NuGet-pakketbeheerders voor de eerste keer kunt instellen, zodat je ze meteen kunt gaan gebruiken.
Gerelateerd: NuGet Server instellen op Windows (Volledige handleiding)
Instellen van een NuGet.Server Wrapper
Hoewel het opzetten van een NuGet.Server vanaf nul niet al te ingewikkeld is, kan het even duren voor iemand die nieuw is in Visual Studio en IIS. Een manier om het installatie- en updateproces te versnellen, is met een wrapper. Een van de meest populaire wrappers, genaamd nuget-server, is geschreven door svenkle en is te vinden op hun GitHub-pagina.
Een van de belangrijke verschillen bij het gebruik van deze wrapper in plaats van het handmatig installeren van de webserver is dat het IIS Express gebruikt. Je kunt meer lezen over de verschillen op de website van Microsoft.
Er zijn twee belangrijke verschillen bij het instellen van een standaard NuGet.Server en met deze wrapper:
- je moet een Windows-service maken om de webserver te starten
- je kunt de IIS Manager niet gebruiken voor de configuratie
Het belangrijkste nadeel van het gebruik van een wrapper om NuGet.Server te installeren, is dat je de versie niet eenvoudig kunt bijwerken totdat de wrapper is bijgewerkt.
Vereisten
Als je wilt leren hoe je deze NuGet.Server-wrapper moet instellen, moet je er eerst voor zorgen dat je het volgende hebt:
- Installer voor de NuGet.Server-wrapper van svenkle
- Windows Server – Elke momenteel ondersteunde versie van Windows Server zal werken, maar alle schermafbeeldingen zijn gemaakt op Windows Server 2019 Standard
De Web Server-service installeren
De eerste stap is het maken van een nieuwe Windows-service. Omdat deze NuGet.Server-wrapper geen gebruik maakt van IIS, kun je niet meeliften op IIS.
Met het NuGetServer.zip-bestand gedownload van de releases-pagina, pak je het bestand uit naar de door jou gekozen directory op de webserver. Nadat het is uitgepakt, maak je de Windows-service om de webpagina automatisch te starten wanneer je de server start. Hieronder vind je een PowerShell-commando om dat voor je te doen.
De webserver aanpassen
Nu dat je de NuGet.Server hebt geïnstalleerd vanuit de wrapper en de service is gemaakt en gestart, is het tijd om het web.config-bestand aan te passen. Je kunt dezelfde wijzigingen aanbrengen als je zou doen met de handmatige implementatie van het web.config-bestand als je dat wilt.
Het web.config-bestand bevindt zich in de <UnzipPath>\Host\Website-map. Het belangrijkste verschil met deze implementatie is dat het poort 8080 gebruikt in plaats van de standaard HTTP-poort 80. Dit betekent dat overal waar je de web-URL zou hebben gebruikt, je :8080 moet toevoegen, zoals wanneer je naar de webpagina gaat, zou het http://localhost:8080/nuget zijn.
Alles klaar. Dat was veel gemakkelijker dan het gebruik van Visual Studio!
BaGet instellen op IIS
Terwijl je tot nu toe alleen naar standaardversies van NuGet.Server hebt gekeken, zijn er tal van andere beschikbare versies. Een populaire NuGet-pakketbeheerder is een open-source project genaamd BaGet.
Laten we eens kijken wat er nodig is om BaGet geïnstalleerd en draaiend te krijgen op een Windows Server met IIS.
Vereisten
Voordat je begint, zorg ervoor dat je aan een paar vereisten voldoet.
- BaGet.zip – Op het moment van schrijven is het project nog steeds in pre-release en ik gebruik v0.1.77
- .NET Core Runtime & Hosting Bundle – Dit moet worden gedownload en beschikbaar zijn op de webserver voor later.
- Windows Server – Elke momenteel ondersteunde versie van Windows Server zal werken, maar alle screenshots zijn gemaakt op Windows Server 2019 Standard
Installeren van Web Server Prerequisites
Hoewel de onderstaande stappen kunnen worden uitgevoerd op Linux met .NET Core of in een Docker-image, zullen deze instructies worden gebruikt om BaGet te installeren op een Windows-server. Op deze manier kunt u profiteren van IIS om uw server te starten en stoppen.
Installeer IIS
Aangezien BaGet op .NET Core draait, zijn er niet zoveel vereisten als de basis NuGet.Server waarvoor u IIS hebt geïnstalleerd. U hebt alleen een standaard IIS-webserver en de IIS-beheerder nodig. Om deze te installeren, opent u een PowerShell-sessie op uw webserver en voert u het volgende uit:
Installeer .NET Core
Installeer vervolgens de .NET Core-bundel op de webserver. Voer hiervoor het eerder gedownloade exe-bestand uit. U kunt alle opties standaard laten voor deze installatie.
De .NET Core-bundel moet worden geïnstalleerd nadat IIS is geïnstalleerd. Als dit niet in de juiste volgorde gebeurt, moet u de installer voor de .NET Core-bundel opnieuw uitvoeren en kiezen voor reparatie om de ontbrekende vereisten voor een webapp toe te voegen.
Nu u de webservercomponenten gereed hebt, unzip het BaGet.zip-bestand dat eerder is gedownload en plaats het in de C:\inetpub\wwwroot-map op uw webserver.
Configuratie van de Web Server Applicatie
Vergelijkbaar met NuGet.Server, moet je een paar IIS-componenten instellen om de NuGet-pakketbeheerder BaGet aan de praat te krijgen.
Het aanmaken van de BaGet IIS-toepassingspool
Open IIS Manager op de webserver en ga naar de Toepassingspools. Maak een nieuwe toepassingspool voor BaGet aan, aangezien het geen .NET-beheerde code zal gebruiken. Je kunt het noemen zoals je wilt. Hieronder zie je hoe het eruit moet zien.

Het aanmaken van de BaGet-website
Zodra de toepassingspool is aangemaakt, maak je de website aan. Aangezien BaGet een niet-standaard HTTP-poort en een niet-standaard app-pool gebruikt, is het het makkelijkst om een aparte website aan te maken vanaf de Standaardwebsite. Klik met de rechtermuisknop op de map Websites in IIS Manager en selecteer Website toevoegen.
Hieronder staan de instellingen die je moet configureren voor BaGet.

Zodra je de site hebt geconfigureerd, zou deze automatisch moeten starten. Je kunt er een kijkje op nemen door naar http://localhost:5000/ te gaan vanaf je server.

Je zult merken dat er op de BaGet-website meer een gebruikersinterface is dan op de standaard NuGet.Server-website. In BaGet kun je eenvoudig zoeken naar geüploade pakketten en het biedt ook de commando’s voor het uploaden op verschillende manieren in plaats van de NuGet-opdrachtregelopties te gebruiken.
Het aanpassen van de BaGet-webserver
Herinner je je dat je in staat was om je NuGet.Server-server aan te passen met behulp van het web.config-bestand. Maar de NuGet-pakketbeheerder BaGet gebruikt het web.config-bestand niet. In plaats daarvan, aangezien BaGet ook op Linux kan worden gebruikt, hebben de ontwikkelaars gekozen voor een meer cross-platform formaat met een JSON-bestand genaamd appsettings.json. Het bevindt zich in de map C:\inetpub\wwwroot\BaGet.
Merk op dat BaGet, vanwege het gebruik van .NET Core voor cross-platform functionaliteit, alle paden met schuine strepen gebruikt.
Bijvoorbeeld, als je je pakketpad op C:\Packages op je server wilt hebben, moet je het volgende instellen in het appsettings.json-bestand.
BaGet API-sleutel
Om je NuGet-server te beschermen tegen ongeautoriseerde gebruikers die pakketten publiceren of verwijderen, wil je nog steeds een API-sleutel instellen. De API-sleutelinstelling bevindt zich ook in het appsettings.json, dus je kunt het daar instellen.
Aangezien ik PowerShell gebruik om mijn NuGet-pakketten te beheren, kan ik opnieuw een PSRepository registreren. Voor BaGet ga je naar de webpagina die je hebt gemaakt. De webpagina geeft je het commando dat je moet uitvoeren in je PowerShell-sessie. Bijvoorbeeld:
Begrip van BaGet Forks (LiGet)
Hoewel BaGet veel opties biedt, zijn er andere forks van BaGet gemaakt die gespecialiseerd zijn in andere gebieden van NuGet. Een van de populairste forks is LiGet. LiGet is anders omdat het zich specialiseert met een op Linux gericht perspectief.
LiGet is een fork van de NuGet-pakketbeheerder van het oorspronkelijke project voor BaGet. Er waren een paar redenen waarom de ontwikkelaars hiervoor kozen, maar het werd voornamelijk gedaan om zich te richten op bepaalde specifieke functies van NuGet, waaronder de ondersteuning voor de v3-feed. De ondersteuning voor de v3-feed heeft geen invloed op het gebruiksscenario met PowerShell. Maar als je een NuGet-server gaat hosten voor andere gebruiksscenario’s, kun je wellicht genieten van de toegevoegde functionaliteit.
Hashed API Key van LiGet
Een belangrijk verschil tussen LiGet en BaGet is het gebruik van een gehashte API-sleutel in plaats van platte tekst. Met een platte tekst sleutel zou iemand met toegang tot het web.config-bestand op NuGet.Server of het appsettings.json-bestand op BaGet kunnen publiceren naar de server. Dit kan niet gebeuren met LiGet.
Om LiGet aan de praat te krijgen, moet je een gehashte API-sleutel maken en deze plaatsen in het appsettings.json-bestand in de C:\inetpub\wwwroot\LiGet-map.
Om de hash te maken, kun je PowerShell of een andere hashmethode gebruiken waar je vertrouwd mee bent. Hieronder staat een voorbeeld van wat je op je werkstation zou uitvoeren om een hash te maken.
Je kunt ook een online hashgenerator gebruiken om de hash te maken.
Het nadeel van deze aanpak is dat als je de API-sleutel vergeet, je een nieuwe hash moet maken en moet vervangen omdat de hash niet omkeerbaar is.
ProGet opzetten op IIS
Al van de opties die tot nu toe zijn behandeld, zijn gratis en hebben niet veel bewegende onderdelen eenmaal ingesteld. Hoewel dit goed is om NuGet uit te proberen, als je wilt integreren met andere tools of als je leveranciersondersteuning nodig hebt voor een systeem op de werkplek, kan een betere optie de NuGet-pakketbeheerder ProGet zijn.
Vereisten
Om ProGet in te stellen, heb je enkele veelvoorkomende vereisten nodig waar je waarschijnlijk al aan gewend bent, maar met de toevoeging van een optionele SQL-database.
- Windows Server – Elke momenteel ondersteunde versie van Windows Server zal werken, maar alle schermafbeeldingen zijn gemaakt op Windows Server 2019 Standard
- ProGet Installer – De versie van ProGet die ik gebruik is 5.2.9.
- SQL-instantie – Dit is optioneel omdat ProGet een optie heeft om SQL Express vanuit de installateur te installeren, hoewel dit wel een internetverbinding vanaf je server vereist om de initiële download te doen
ProGet installeren
Voer de ProGet-installateur uit vanaf je webserver. Aangezien je IIS instelt, selecteer je de IIS-webserver-optie bij het installeren van ProGet. Als je IIS nog niet hebt geïnstalleerd, zal het de installatie afhandelen tijdens de installatie van ProGet.
De rest van de opties kunt u standaard laten, tenzij u de ProGet-database op een aparte SQL-server wilt hosten. In dat geval moet u de SQL-instantie specificeren.
Als u de optie SQL Server als Installeren van Inedo-instantie laat staan, zal het een SQL Express-server voor u installeren.

Zodra de installatie is voltooid, start u de website wanneer daarom wordt gevraagd en zou u een webpagina moeten zien verschijnen die eruitziet als de onderstaande schermafbeelding.

Het configureren van een PSRepository op ProGet
Op dit punt is ProGet geïnstalleerd. Het is vrij eenvoudig. Omdat we PowerShell gebruiken om te werken met NuGet-pakketten, moeten we een PSRepository instellen zoals we eerder hebben gedaan.
Om ProGet in te stellen voor een PSRepository, gaat u naar het tabblad Feeds en maakt u een nieuwe feed aan. U kunt de feed een willekeurige naam geven. Selecteer vervolgens Pakketformaat van derden en PowerShell zoals hieronder wordt getoond.

Nadat u de feed heeft aangemaakt, gaat u terug naar het tabblad Feeds, selecteert u uw nieuwe feed en wordt de URL getoond die wordt gebruikt voor publiceren. Dit is wat u in PowerShell op een apparaat zou moeten uitvoeren om naar deze PSRepository te publiceren of van daaruit te downloaden.
Hieronder wordt getoond wat werd weergegeven met het voorbeeld hierboven:
Het toevoegen van een API-sleutel
Zoals de andere opties, moet u een API-sleutel genereren. Klik hiervoor op het tandwielicoon in de rechterbovenhoek en selecteer vervolgens API-sleutels in de linkerwerkbalk. Hier kunt u bestaande API-sleutels zien en nieuwe maken. U zult direct een belangrijk verschil zien tussen de open-source en enterprise ProGet. Met ProGet kunt u veel API-sleutels hebben.

Op het scherm API-sleutels, klik op API-sleutel maken. Vink hier het vakje voor Feed API aan en klik op API-sleutel opslaan.

Zodra de API-sleutel is aangemaakt, word je teruggebracht naar de pagina API-sleutels. Vanaf hier kun je de API-sleutel die je ziet gebruiken om pakketten naar je feed te publiceren.
Pakketten zoeken met ProGet
ProGet bevat ook een webpagina waarmee je alle NuGet-pakketten in de feed kunt doorzoeken, hun downloadtelling kunt zien, de naam van de PowerShell-modules, in welke feed een pakket is geüpload en andere soortgelijke pakketstatistieken vanaf de pagina Pakketten, zoals hieronder wordt weergegeven.

Als alternatief kun je naar de pagina Feeds gaan en een feed selecteren om alleen de pakketten voor die feed te zien. Daar kun je tot individuele pakketten doordringen om de statistieken en andere details over de pakketten te zien, zoals hieronder wordt weergegeven.

ProGet bijwerken
Een van de leuke dingen van het gebruik van een product dat is gepositioneerd voor een bedrijfsomgeving is dat sommige van de tijdrovende administratieve taken veel sneller zijn. Een voorbeeld hiervan is het bijwerken van ProGet.
Om ProGet bij te werken naar de nieuwste versie, open je eenvoudig de Inedo Installer op je webserver. Dit is geïnstalleerd toen je ProGet voor het eerst installeerde. Klik op de knop Upgraden zoals hieronder wordt weergegeven en de installer zal de rest voor je doen.

Vergelijking van NuGet-pakketbeheerders
Je hebt veel geleerd over verschillende NuGet-tools in dit artikel. Als je nog steeds aan het rondkijken bent welke je wilt uitproberen, krijg je in dit gedeelte een kijkje in wat elk van hen anders maakt.
BaGet vs. LiGet
Sinds LiGet een fork is van BaGet, delen ze veel overeenkomsten, inclusief het grootste deel van het installatieproces. Sterker nog, je kunt het exact dezelfde installatieprocedure volgen als bij BaGet.
Eenmaal geïnstalleerd, delen LiGet en BaGet enkele functies, maar verschillen ze op andere manieren.
Feature | BaGet | LiGet |
---|---|---|
Web Port | 5000 | 9011 |
Source URL | /v3/index.json | /api/v3/index.json |
NuGet Search API | v2 | v3 |
API Key | Plain Text | SHA256 hash |
Web Interface | Can see list of packages and commands to upload | No web interface |
Hoewel de meeste van deze verschillen geen invloed hebben op het gebruik met PowerShell, verandert de installatieprocedure iets vanwege het gebruik van een gehashte API-sleutel.
Zowel BaGet als LiGet zijn gebouwd op .NET Core, wat ze cross-platform en bruikbaar op Linux-operatingsystemen maakt, evenals op Windows. Beide hebben ook Docker-images beschikbaar die, als je al een containerdienst gebruikt, de installatie veel sneller en draagbaarder kunnen maken.
Met de paar verschillen tussen LiGet en BaGet is elk van beide een uitstekende optie voor een open-source, container-vriendelijke NuGet-server. Beide opties bieden de mogelijkheid om een NuGet-server op Windows uit te proberen, terwijl je jezelf de vrijheid geeft om in de toekomst over te stappen naar Linux of een Docker-image zonder al te veel extra werk.
BaGet vs ProGet
Als je liever niet zelf iets wilt samenstellen en de gemakkelijke weg wilt nemen, is er altijd ProGet. Er zijn echter nadelen. ProGet is niet open source en zeker niet gratis. Maar het is eenvoudiger in te stellen en mee te werken.
Er zijn een paar belangrijke verschillen tussen ProGet en BaGet.
Feature | ProGet | BaGet |
---|---|---|
Cost | ProGet Free: Free, ProGet Basic: $1995/yr, ProGet Enterprise: $9995+/year | Free |
Platform | Windows | Windows, Linux, Docker |
Database | SQL | Internal |
Support | ProGet Free: Email and Slack support, ProGet Basic and Enterprise: Defined SLAs with Email, Slack and Phone support | Community based through GitHub issues |
Inedo heeft ook een overzicht van alle kenmerkverschillen tussen versies van ProGet.
Samenvatting
In dit artikel heb je veel geleerd over verschillende NuGet-tools en -technologieën. Als je twijfelde over welke NuGet-server je moest gebruiken, zou je nu veel meer kennis moeten hebben om je te helpen bij het nemen van die beslissing.
Je hebt geleerd hoe je elke NuGet-tool kunt instellen om te werken met Windows en we hebben veel van de functies van elke tool behandeld.