Según la definición de Microsoft, NuGet es el administrador de paquetes para .NET. Las herramientas cliente de NuGet permiten producir y consumir paquetes.
nuget.org y la PowerShell Gallery son ejemplos de feeds NuGet. Permiten a los usuarios publicar paquetes para que otros los consuman. Cuando usa Publish-PSResource o Publish-Module, está creando un paquete NuGet y publicándolo en un feed.
Crear un feed NuGet en PowerShell Universal
Los feeds NuGet habituales se basan en miles de líneas de código para ofrecer mecanismos sólidos de almacenamiento de metadatos, caché y búsqueda de paquetes. Para usuarios con un número limitado de paquetes, existe una herramienta que puede crear feeds estáticos: Sleet. La herramienta de línea de comandos Sleet crea ficheros JSON estáticos y almacenamiento para paquetes NuGet. No admite tantas opciones como otras tecnologías, pero sí ofrece sencillez.
En el resto de este artículo veremos cómo usar Sleet para crear un feed NuGet en PowerShell Universal.
Instalar Sleet
Puede instalar Sleet como herramienta global dotnet si tiene instalado el SDK de .NET.
dotnet tool install -g sleet
Una vez instalado, puede ejecutar sleet para acceder a la herramienta.
Configurar un feed Sleet
A continuación, configuremos un feed Sleet sencillo. Cree un directorio y luego una configuración Sleet local.
New-Item -ItemType Directory C:\sleet\
Set-Location C:\sleet
sleet createconfig --local
Abra el fichero sleet.json generado y configure las propiedades del feed. El URI base apuntará a una carpeta publicada en PowerShell Universal.
{
"username": "",
"useremail": "",
"sources": [
{
"name": "myLocalFeed",
"type": "local",
"path": "C:\\sleet\\myfeed",
"baseURI": "http://localhost:5000/feed/"
}
]
}
Publicar un paquete
Para publicar un paquete, puede usar el siguiente comando Sleet contra un solo paquete NuGet o un directorio de paquetes. Yo publiqué 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 actualizará todos los ficheros del feed necesarios, creará la estructura de carpetas adecuada y moverá el nupkg a la carpeta de almacenamiento flatcontainer.
Alojar en PowerShell Universal
A continuación, hay que configurar PowerShell Universal para servir el feed NuGet. Podemos hacerlo con una carpeta publicada. Debe indicar la ruta de la carpeta del feed NuGet.
New-PSUPublishedFolder -Path C:\sleet\myfeed -RequestPath /feed
Puede comprobar que el feed es accesible visitando la siguiente URL.
http://localhost:5000/feed/index.json
Registrar un repositorio PowerShellGet
Se requiere PowerShellGet v3 porque PowerShellGet v2 no admite feeds NuGet v3. Sleet solo genera feeds NuGet v3.
Install-Module PowerShellGet -AllowPrerelease -Force
Cuando tenga PowerShellGet v3 instalado, puede usar Register-PSResourceRepository para registrar el nuevo feed.
Register-PSResourceRepository -Name 'MyLocalFeed' -Uri 'http://localhost:5000/feed/index.json'
Puede comprobar que el repositorio se registró correctamente 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…
También podrá usar comandos como Save-PSResource.
Save-PSResource -Name posh-ssh -Path .\ -Repository MyLocalFeed
Cargar paquetes nuevos en PowerShell Universal
En lugar de ejecutar manualmente los comandos Sleet en la máquina de PowerShell Universal, puede crear un script PSU que acepte un fichero. Cree un script nuevo en PSU con el contenido siguiente.
param(
[File]$File
)
$Package = [IO.Path]::GetTempFileName()
[System.IO.File]::WriteAllBytes($Package, $File.Content)
Set-Location C:\sleet
sleet push -s myLocalFeed $Package
Cuando el script haya terminado, los ficheros del feed NuGet se habrán actualizado y el paquete estará disponible mediante los comandos de 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.
Mostrar paquetes en un dashboard
Puede usar el cmdlet Find-PSResource para mostrar todos los paquetes de su feed.
New-UDDashboard -Title 'PowerShell Universal' -Content {
$Packages = Find-PSResource -Name * -Repository MyLocalFeed | Select Name,Version,Description
New-UDTable -Data $Packages
}
Conclusión
En este artículo hemos visto cómo configurar un feed NuGet semiestático con Sleet y PowerShell Universal.
¿Listo para crear? Descargue PowerShell Universal.

Adam Driscoll