Som Microsoft definerer det, er NuGet pakkehåndteringen til .NET. NuGet-klientværktøjerne gør det muligt at producere og forbruge pakker.
nuget.org og PowerShell Gallery er eksempler på NuGet-feeds. De lader brugere udgive pakker, så andre kan forbruge dem. Når du bruger Publish-PSResource eller Publish-Module, opretter du en NuGet-pakke og udgiver den til et feed.
Opret et NuGet-feed i PowerShell Universal
Typiske NuGet-feeds bygger på tusindvis af kodelinjer for at levere robuste mekanismer til lagring af metadata, caching og søgning i pakker. Til brugere med et begrænset antal pakker findes der et værktøj, der kan oprette statiske feeds: Sleet. Kommandolinjeværktøjet Sleet opretter statiske JSON-filer og lagerplads til NuGet-pakker. Det understøtter ikke nær så mange muligheder som andre teknologier, men det er enkelt.
I resten af indlægget ser vi på, hvordan du bruger Sleet til at oprette et NuGet-feed i PowerShell Universal.
Installer Sleet
Du kan installere Sleet som et globalt dotnet-værktøj, hvis du har .NET SDK installeret.
dotnet tool install -g sleet
Når det er installeret, kan du bare køre sleet for at bruge værktøjet.
Konfigurer et Sleet-feed
Lad os derefter sætte et enkelt Sleet-feed op. Opret en mappe, og opret derefter en lokal Sleet-konfiguration.
New-Item -ItemType Directory C:\sleet\
Set-Location C:\sleet
sleet createconfig --local
Åbn den genererede fil sleet.json, og konfigurer feedets egenskaber. Basis-URI’en sættes til en udgivet mappe i PowerShell Universal.
{
"username": "",
"useremail": "",
"sources": [
{
"name": "myLocalFeed",
"type": "local",
"path": "C:\\sleet\\myfeed",
"baseURI": "http://localhost:5000/feed/"
}
]
}
Udgiv en pakke
For at udgive en pakke kan du bruge følgende Sleet-kommando mod en enkelt NuGet-pakke eller en mappe med pakker. Jeg udgav 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 opdaterer alle de nødvendige feedfiler, opretter den rigtige mappestruktur og flytter nupkg-filen til lagermappen flatcontainer.
Host feedet i PowerShell Universal
Derefter skal PowerShell Universal sættes op til at servere NuGet-feedet. Det kan du gøre med en udgivet mappe. Du skal angive stien til mappen med NuGet-feedet.
New-PSUPublishedFolder -Path C:\sleet\myfeed -RequestPath /feed
Du kan kontrollere, at feedet er tilgængeligt, ved at besøge følgende URL.
http://localhost:5000/feed/index.json
Registrer et PowerShellGet-repository
PowerShellGet v3 er påkrævet, fordi PowerShellGet v2 ikke understøtter NuGet-feeds i version 3. Sleet genererer kun NuGet-feeds i version 3.
Install-Module PowerShellGet -AllowPrerelease -Force
Når du har installeret PowerShellGet v3, kan du bruge Register-PSResourceRepository til at registrere dit nye feed.
Register-PSResourceRepository -Name 'MyLocalFeed' -Uri 'http://localhost:5000/feed/index.json'
Du kan kontrollere, at repository’et blev registreret korrekt, ved at bruge 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…
Du kan også bruge kommandoer som Save-PSResource.
Save-PSResource -Name posh-ssh -Path .\ -Repository MyLocalFeed
Upload nye pakker i PowerShell Universal
I stedet for at køre Sleet-kommandoerne manuelt på PowerShell Universal-maskinen kan du gøre det ved at oprette et PSU-script, der tager imod en fil. Opret et nyt script i PSU med følgende indhold.
param(
[File]$File
)
$Package = [IO.Path]::GetTempFileName()
[System.IO.File]::WriteAllBytes($Package, $File.Content)
Set-Location C:\sleet
sleet push -s myLocalFeed $Package
Når scriptet er kørt færdigt, er NuGet-feedfilerne opdateret, og pakken er tilgængelig via PowerShellGet-kommandoerne.
Find-PSResource -Name pswindowsupdate
Name Version Prerelease Repository Description
---- ------- ---------- ---------- -----------
PSWindowsUpdate 2.2.0.3 MyLocalFeed This module contain cmdlets to manage Windows Update Client.
Vis pakker i et dashboard
Du kan bruge cmdlet’en Find-PSResource til at vise alle pakkerne i dit feed.
New-UDDashboard -Title 'PowerShell Universal' -Content {
$Packages = Find-PSResource -Name * -Repository MyLocalFeed | Select Name,Version,Description
New-UDTable -Data $Packages
}
Konklusion
I indlægget har vi gennemgået, hvordan du sætter et semistatisk NuGet-feed op med Sleet og PowerShell Universal.
Klar til at bygge? Download PowerShell Universal.

Adam Driscoll