Secondo la definizione di Microsoft, NuGet è il gestore di pacchetti per .NET. Gli strumenti client NuGet consentono di produrre e consumare pacchetti.
nuget.org e la PowerShell Gallery sono esempi di feed NuGet. Consentono agli utenti di pubblicare pacchetti affinché altri li consumino. Quando usa Publish-PSResource o Publish-Module, sta creando un pacchetto NuGet e pubblicandolo in un feed.
Creare un feed NuGet in PowerShell Universal
I feed NuGet tipici si basano su migliaia di righe di codice per offrire meccanismi solidi di archiviazione dei metadati, caching e ricerca dei pacchetti. Per gli utenti con un numero limitato di pacchetti, esiste uno strumento che può creare feed statici: Sleet. Lo strumento da riga di comando Sleet crea file JSON statici e archiviazione per i pacchetti NuGet. Non supporta molte delle opzioni di altre tecnologie, ma offre semplicità.
Nel resto di questo articolo vedremo come usare Sleet per creare un feed NuGet in PowerShell Universal.
Installare Sleet
Può installare Sleet come strumento globale dotnet se ha installato il .NET SDK.
dotnet tool install -g sleet
Una volta installato, può semplicemente eseguire sleet per accedere allo strumento.
Configurare un feed Sleet
Successivamente, configuriamo un feed Sleet semplice. Crei una directory e poi una configurazione Sleet locale.
New-Item -ItemType Directory C:\sleet\
Set-Location C:\sleet
sleet createconfig --local
Apra il file sleet.json generato e configuri le proprietà del feed. L’URI di base punterà a una cartella pubblicata in PowerShell Universal.
{
"username": "",
"useremail": "",
"sources": [
{
"name": "myLocalFeed",
"type": "local",
"path": "C:\\sleet\\myfeed",
"baseURI": "http://localhost:5000/feed/"
}
]
}
Pubblicare un pacchetto
Per pubblicare un pacchetto, può usare il seguente comando Sleet su un singolo pacchetto NuGet o su una directory di pacchetti. Ho pubblicato Posh-SSH.
Invoke-WebRequest 'https://www.powershellgallery.com/api/v2/package/Posh-SSH/3.0.8' -OutFile "C:\Users\adamr\Downloads\posh-ssh.3.0.8.nupkg"
Set-Location C:\sleet
sleet push -s myLocalFeed "C:\Users\adamr\Downloads\posh-ssh.3.0.8.nupkg"
Sleet aggiornerà tutti i file del feed necessari, creerà la struttura di cartelle corretta e sposterà il nupkg nella cartella di archiviazione flatcontainer.
Ospitare in PowerShell Universal
Successivamente, dobbiamo configurare PowerShell Universal per servire il feed NuGet. Possiamo farlo con una cartella pubblicata. Dovrà impostare il percorso della cartella del feed NuGet.
New-PSUPublishedFolder -Path C:\sleet\myfeed -RequestPath /feed
Può verificare che il feed sia accessibile visitando il seguente URL.
http://localhost:5000/feed/index.json
Registrare un repository PowerShellGet
PowerShellGet v3 è richiesto perché PowerShellGet v2 non supporta i feed NuGet v3. Sleet genera solo feed NuGet v3.
Install-Module PowerShellGet -AllowPrerelease -Force
Una volta installato PowerShellGet v3, può usare Register-PSResourceRepository per registrare il nuovo feed.
Register-PSResourceRepository -Name 'MyLocalFeed' -Uri 'http://localhost:5000/feed/index.json'
Può verificare che il repository sia stato registrato correttamente con Find-PSResource.
Find-PSResource -Name posh-ssh
Name Version Prerelease Repository Description
---- ------- ---------- ---------- -----------
Posh-SSH 3.0.8.0 MyLocalFeed Provide SSH and SCP functionality for executing commands against remot…
Potrà anche usare comandi come Save-PSResource.
Save-PSResource -Name posh-ssh -Path .\ -Repository MyLocalFeed
Caricare nuovi pacchetti in PowerShell Universal
Invece di eseguire manualmente i comandi Sleet sulla macchina PowerShell Universal, può creare uno script PSU che accetta un file. Crei un nuovo script in PSU con il contenuto seguente.
param(
[File]$File
)
$Package = [IO.Path]::GetTempFileName()
[System.IO.File]::WriteAllBytes($Package, $File.Content)
Set-Location C:\sleet
sleet push -s myLocalFeed $Package
Al termine dello script, i file del feed NuGet saranno stati aggiornati e il pacchetto sarà disponibile tramite i comandi PowerShellGet.
Find-PSResource -Name pswindowsupdate
Name Version Prerelease Repository Description
---- ------- ---------- ---------- -----------
PSWindowsUpdate 2.2.0.3 MyLocalFeed This module contain cmdlets to manage Windows Update Client.
Visualizzare i pacchetti in una dashboard
Può usare il cmdlet Find-PSResource per visualizzare tutti i pacchetti del feed.
New-UDDashboard -Title 'PowerShell Universal' -Content {
$Packages = Find-PSResource -Name * -Repository MyLocalFeed | Select Name,Version,Description
New-UDTable -Data $Packages
}
Conclusione
In questo articolo abbiamo visto come configurare un feed NuGet semi-statico con Sleet e PowerShell Universal.
Pronto a iniziare a creare? Scarichi PowerShell Universal.

Adam Driscoll