Hai creato un’applicazione o forse anche un insieme di script importanti e hai bisogno di impacchettarla e distribuirla. Non cercare oltre NuGet e i vari gestori di pacchetti NuGet disponibili.
In questo articolo, imparerai come configurare diversi gestori di pacchetti NuGet per la prima volta in modo da poterli utilizzare immediatamente.
Correlato: Configurazione di NuGet Server su Windows (Guida completa)
Configurazione di un Wrapper NuGet.Server
Pur configurare un NuGet.Server da zero non è troppo complicato, può richiedere del tempo per chi è nuovo a Visual Studio e IIS. Un modo per accelerare il processo di configurazione e aggiornamento è utilizzare un wrapper. Uno dei wrapper più popolari, chiamato nuget-server, è stato scritto da svenkle ed è disponibile sulla sua pagina Github.
Una delle principali differenze nell’utilizzare questo wrapper anziché installare manualmente il server web è che utilizza IIS Express. Puoi leggere ulteriori informazioni sulle differenze sul sito web di Microsoft.
Ci sono due importanti differenze tra la configurazione di un NuGet.Server base e quella con questo wrapper:
- devi creare un servizio Windows per avviare il server web
- non puoi utilizzare il Gestore IIS per la configurazione.
Il principale svantaggio nell’utilizzare un wrapper per installare NuGet.Server è che non è possibile aggiornare facilmente la versione finché il wrapper non viene aggiornato.
Prerequisiti
Se desideri imparare come configurare questo wrapper di NuGet.Server, assicurati di avere quanto segue:
- Installatore per il wrapper di NuGet.Server di svenkle
- Windows Server – Qualsiasi versione attualmente supportata di Windows Server funzionerà, ma tutte le immagini sono state realizzate su Windows Server 2019 Standard
Installazione del servizio Web Server
Il primo passo consiste nel creare un nuovo servizio Windows. Poiché questo wrapper di NuGet.Server non utilizza IIS, non è possibile agganciarsi a IIS.
Con il file NuGetServer.zip scaricato dalla pagina dei rilasci, decomprimi il file nella directory di tua scelta sul server web. Una volta decompresso, crea il servizio Windows per avviare automaticamente la pagina web quando si avvia il server. Di seguito troverai un comando PowerShell per farlo per te.
Personalizzazione del server web
Ora che hai installato NuGet.Server tramite il wrapper e creato e avviato il servizio, è ora di personalizzare il file web.config. Puoi apportare le stesse modifiche che avresti apportato al file web.config con il deployment manuale, se lo desideri.
Il file web.config si trova nella cartella <UnzipPath>\Host\Website. La differenza principale con questo deployment è che utilizza la porta 8080 invece della porta HTTP predefinita 80. Ciò significa che ovunque avresti utilizzato l’URL web, devi aggiungere :8080, ad esempio quando vai alla pagina web sarebbe http://localhost:8080/nuget.
Tutto fatto. È stato molto più facile che utilizzare Visual Studio!
Configurazione di BaGet su IIS
Mentre finora hai esaminato solo versioni di stock di NuGet.Server, ci sono molte altre versioni disponibili. Un popolare gestore di pacchetti NuGet è un progetto open-source chiamato BaGet.
Vediamo cosa serve per installare e far funzionare BaGet su un server Windows con IIS.
Prerequisiti
Prima di iniziare, assicurati di soddisfare alcuni prerequisiti.
- BaGet.zip – Al momento della stesura di questo testo, il progetto è ancora in pre-release e sto usando la versione 0.1.77.
- .NET Core Runtime & Hosting Bundle – Questo dovrà essere scaricato e disponibile sul server web successivamente.
- Windows Server – Qualsiasi versione attualmente supportata di Windows Server funzionerà, ma tutte le schermate sono state realizzate su Windows Server 2019 Standard
Installazione dei prerequisiti del server Web
Sebbene i passaggi seguenti possano essere eseguiti su Linux con .NET Core o in un’immagine Docker, queste istruzioni verranno utilizzate per installare BaGet su un server Windows. In questo modo è possibile sfruttare IIS per avviare e arrestare il server.
Installare IIS
Poiché BaGet funziona su .NET Core, non sono necessari molti requisiti come per il NuGet.Server di base per il quale hai installato IIS in precedenza. È sufficiente un server Web IIS predefinito e il gestore IIS. Per installarli, apri una sessione PowerShell sul tuo server Web e esegui il seguente comando:
Installare .NET Core
In seguito, installa il bundle di .NET Core sul server Web. Per farlo, esegui il file exe che hai scaricato in precedenza. Puoi lasciare tutte le opzioni predefinite per questa installazione.
Il bundle di .NET Core deve essere installato dopo l’installazione di IIS. Se ciò non avviene nell’ordine corretto, dovrai eseguire nuovamente l’installatore del bundle di .NET Core e selezionare “Ripara” per aggiungere i requisiti mancanti per un’app Web.
Ora che hai i componenti del server Web pronti, decomprimi il file BaGet.zip scaricato in precedenza e inseriscilo nella cartella C:\inetpub\wwwroot del tuo server Web.
Configurazione dell’applicazione del server Web
Simile a NuGet.Server, sarà necessario configurare alcuni componenti di IIS per far funzionare il gestore dei pacchetti NuGet BaGet.
Creazione dell’Application Pool BaGet in IIS
Apri Gestione IIS sul server web e vai a Application Pools. Crea un nuovo application pool per BaGet poiché non utilizzerà il codice gestito .NET. Puoi dargli il nome che preferisci. Di seguito è riportato come dovrebbe apparire.

Creazione del sito web BaGet
Una volta creato l’application pool, crea il sito web. Poiché BaGet utilizza una porta HTTP non standard e un app pool non predefinito, è più semplice creare un sito web separato rispetto al Sito Web predefinito. Per fare ciò, fai clic con il pulsante destro del mouse sulla cartella Siti in Gestione IIS e seleziona Aggiungi sito web.
Ecco le impostazioni che devi configurare per BaGet.

Una volta configurato il sito, dovrebbe avviarsi automaticamente. Puoi dargli un’occhiata andando su http://localhost:5000/ dal tuo server.

Noterai che la pagina web di BaGet ha un’interfaccia utente più avanzata rispetto alla pagina web standard di NuGet.Server. In BaGet, puoi cercare facilmente i pacchetti che sono stati caricati e fornisce anche i comandi su come caricarli in vari modi, invece di utilizzare le opzioni della riga di comando di NuGet.
Personalizzazione del server web BaGet
Ricorda che hai potuto personalizzare il tuo server NuGet.Server utilizzando il file web.config. Ma il gestore dei pacchetti NuGet BaGet non utilizza il file web.config. Invece, poiché BaGet può essere utilizzato anche su Linux, gli sviluppatori hanno optato per un formato più cross-platform con un file JSON chiamato appsettings.json. Si trova nella cartella C:\inetpub\wwwroot\BaGet.
Si noti che poiché BaGet utilizza .NET Core per la funzionalità cross-platform, tutti i percorsi utilizzano la barra obliqua inversa.
Ad esempio, se si desidera avere il percorso del pacchetto su C:\Packages sul proprio server, è necessario avere quanto mostrato di seguito nel file appsettings.json.
Chiave API BaGet
Per proteggere il tuo server NuGet da utenti non autorizzati che vogliono pubblicare o eliminare pacchetti, è consigliabile impostare una chiave API. L’impostazione della chiave API si trova anche nell’appsettings.json, quindi è possibile impostarla mentre si è lì.
Dato che utilizzo PowerShell per gestire i miei pacchetti NuGet, posso ancora registrare un PSRepository. Per BaGet, vai alla pagina web che hai creato. La pagina web ti fornirà il comando da eseguire nella sessione di PowerShell. Ad esempio:
Comprensione delle varianti di BaGet (LiGet)
Sebbene BaGet offra molte opzioni d’uso, ci sono altre varianti di BaGet che sono state create per specializzarsi in altri ambiti di NuGet. Una delle varianti più popolari è LiGet. LiGet è diverso perché si specializza in un approccio orientato a Linux.
LiGet è una versione fork del gestore di pacchetti NuGet del progetto originale BaGet. Ci sono state alcune ragioni per cui gli sviluppatori hanno deciso di farlo, ma principalmente è stato fatto per concentrarsi su alcune caratteristiche specifiche di NuGet, inclusa la compatibilità con il feed v3. La compatibilità con il feed v3 non influisce sull’uso con PowerShell. Ma se si intende ospitare un server NuGet per altri casi d’uso, potrebbe essere apprezzata la funzionalità aggiuntiva.
L’API Key crittografata di LiGet
Una differenza importante tra LiGet e BaGet è l’uso di una chiave API crittografata invece del testo normale. Con una chiave di testo normale, qualcuno con accesso al file web.config su NuGet.Server o al file appsettings.json su BaGet potrebbe pubblicare sul server. Questo non sarebbe possibile con LiGet.
Per far funzionare LiGet, è necessario creare una chiave API crittografata e inserirla nel file appsettings.json nella cartella C:\inetpub\wwwroot\LiGet.
Per creare l’hash, è possibile utilizzare PowerShell o qualsiasi altro metodo di crittografia con cui si è a proprio agio. Di seguito è riportato un esempio di quello che si eseguirebbe sulla propria postazione per creare un hash.
È anche possibile utilizzare un generatore di hash online per creare l’hash.
Lo svantaggio di questo approccio è che se si dimentica la chiave API, è necessario creare un nuovo hash e sostituirlo poiché l’hash non è reversibile.
Configurazione di ProGet su IIS.
Tutte le opzioni finora illustrate sono gratuite e non hanno molte parti in movimento una volta configurate. Sebbene ciò sia buono per provare NuGet, se desideri integrarti con altri strumenti o se hai bisogno del supporto del fornitore per un sistema sul posto di lavoro, potrebbe essere una scelta migliore il gestore dei pacchetti NuGet ProGet.
Prerequisiti
Per configurare ProGet, avrai bisogno di alcuni prerequisiti comuni che probabilmente conosci già, ma con l’aggiunta di un database SQL opzionale.
- Windows Server – Qualsiasi versione attualmente supportata di Windows Server funzionerà, ma tutti gli screenshot sono stati eseguiti su Windows Server 2019 Standard.
- ProGet Installer – La versione di ProGet che sto usando è la 5.2.9.
- Istanza SQL – Questa è opzionale poiché ProGet ha un’opzione per installare SQL Express dall’installer, anche se ciò richiede una connessione Internet dal tuo server per il download iniziale.
Installazione di ProGet
Dal tuo server web, esegui l’installazione di ProGet. Poiché stai configurando IIS, seleziona l’opzione server web IIS durante l’installazione di ProGet. Se non hai già installato IIS, sarà gestita l’installazione durante l’installazione di ProGet.
Il resto delle opzioni puoi lasciarle di default a meno che tu voglia ospitare il database di ProGet su un server SQL separato. In tal caso, dovrai specificare l’istanza SQL da utilizzare.
Se lasci l’opzione SQL Server come Installare l’istanza Inedo, installerà per te il server SQL Express.

Una volta completata l’installazione, avvia il sito web quando richiesto e dovresti vedere una pagina web che appare come lo screenshot di seguito.

Configurazione di un PSRepository su ProGet
A questo punto, ProGet è installato. È piuttosto semplice. Dato che stiamo usando PowerShell per lavorare con i pacchetti NuGet, dovremo configurare un PSRepository come abbiamo fatto in precedenza.
Per configurare ProGet per un PSRepository, vai alla scheda Feeds e crea un nuovo feed. Puoi dare al feed qualsiasi nome desideri. Quindi seleziona Third-party package format e PowerShell come mostrato di seguito.

Una volta creato il feed, torna alla scheda Feeds, seleziona il tuo nuovo feed e verrà mostrato l’URL utilizzato per la pubblicazione. Questo è ciò che dovresti eseguire in PowerShell su un dispositivo per pubblicare o scaricare da questo PSRepository.
Ecco cosa è stato mostrato con l’esempio di cui sopra:
Aggiungere una chiave API
Come le altre opzioni, è necessario generare una chiave API. Per farlo, fai clic sull’icona dell’ingranaggio nell’angolo in alto a destra e seleziona poi API Keys dalla barra degli strumenti a sinistra. Qui puoi vedere le chiavi API esistenti e puoi crearne di nuove. Noterai immediatamente una differenza principale tra ProGet open-source e enterprise. Con ProGet, puoi avere molte chiavi API.

Nella schermata API Keys, clicca su Crea API Key. Da qui, seleziona la casella per Feed API e clicca su Salva API Key.

Una volta creata l’API key, verrai riportato alla pagina API keys. Da qui, puoi utilizzare l’API key che vedi per pubblicare pacchetti nel tuo feed.
Ricerca dei pacchetti con ProGet
ProGet include anche una pagina web che ti permette di cercare tutti i pacchetti NuGet nel feed, vedere il numero di download, il nome dei moduli PowerShell, in quale feed è stato caricato un pacchetto e altre statistiche simili dei pacchetti dalla pagina Packages come mostrato di seguito.

In alternativa, puoi andare alla pagina Feeds e selezionare un feed per vedere solo i pacchetti di quel feed. Da lì puoi approfondire i singoli pacchetti per vedere le statistiche e altri dettagli sui pacchetti come mostrato di seguito.

Aggiornamento di ProGet
Una delle parti interessanti nell’utilizzare un prodotto concepito per le aziende è che alcune delle attività amministrative più lunghe richiedono molto meno tempo. Un esempio di ciò è l’aggiornamento di ProGet.
Per aggiornare ProGet all’ultima versione, apri semplicemente l’Inedo Installer sul tuo server web. Questo è stato installato quando hai installato per la prima volta ProGet. Clicca sul pulsante Aggiorna come mostrato di seguito e l’installer farà il resto per te.

Confronto tra gestori di pacchetti NuGet
Hai imparato molto su vari strumenti NuGet in questo articolo. Se stai ancora cercando quale provare, in questa sezione avrai un’idea di ciò che li rende diversi l’uno dall’altro.
BaGet vs. LiGet
Dato che LiGet è un fork di BaGet, condividono molte somiglianze, compreso gran parte del processo di configurazione. Infatti, è possibile seguire la stessa procedura di installazione di BaGet.
Una volta installati, LiGet e BaGet condividono alcune funzionalità ma differiscono in altri aspetti.
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 |
Sebbene la maggior parte di queste differenze non influisca sull’uso con PowerShell, la configurazione cambia leggermente a causa dell’utilizzo di una chiave API hashata.
Sia BaGet che LiGet sono basati su .NET Core, il che li rende multi-piattaforma e utilizzabili su sistemi operativi Linux e Windows. Entrambi hanno anche immagini Docker disponibili che, se si sta già utilizzando un servizio di container, possono rendere la configurazione più veloce e portatile.
Con poche differenze tra LiGet e BaGet, entrambe sono ottime opzioni per un server NuGet open source e compatibile con i container. Entrambe le opzioni consentono di iniziare con un server NuGet su Windows e di passare a Linux o a un’immagine Docker in futuro senza troppo lavoro aggiuntivo.
BaGet vs ProGet
Se preferisci evitare di creare qualcosa da zero e prendere la strada più semplice, c’è sempre ProGet. Ci sono però degli svantaggi. ProGet non è open source e non è gratuito. Tuttavia, è più facile da configurare e utilizzare.
Ci sono alcune differenze significative tra ProGet e 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 ha anche una panoramica di tutte le differenze tra le funzionalità delle versioni di ProGet.
Riepilogo
In questo articolo hai imparato molto su vari strumenti e tecnologie NuGet. Se eri indeciso su quale server NuGet utilizzare, ora dovresti avere molte più conoscenze per aiutarti a prendere questa decisione.
Hai imparato come configurare ogni strumento NuGet per lavorare con Windows e abbiamo coperto molte delle sue funzionalità.