Extrayendo archivos Nupkg usando la línea de comando

105

En primer lugar, no quiero usar Visual Studio en absoluto al tratar con ciertos archivos .nupkg.

Sé que hay una herramienta llamada NuGet Package Explorer y esta puede exportar archivos nupkg a una determinada ubicación de archivo usando una interfaz gráfica de usuario, pero estoy buscando configurar una tarea de MSBuild para ejecutar y descomprimir alrededor de 50 archivos .nupkg, usando la línea de comando.

Mi pregunta es, ¿hay alguna herramienta que pueda usar a través de la línea de comando que descomprima los archivos .nupkg en una ubicación de archivo específica?

Luis
fuente

Respuestas:

106

También puede usar la línea de comandos de NuGet especificando un host local como parte de una instalación. Por ejemplo, si su paquete está almacenado en el directorio actual

nuget install MyPackage -Source %cd% -OutputDirectory packages

lo descomprimirá en el directorio de destino.

Andy
fuente
14
Solo tenga en cuenta que MyPackage es en realidad un ID de paquete que se especifica en el archivo .nuspec y no un nombre de archivo.
Rod
y tienes que ejecutarlo desde la consola con privilegios de administrador
Sonic Soul
7
Fwiw, en PowerShell el comando se ve así: nuget install MyPackage -Source $ pwd -OutputDirectory packages
Mark Boltuc
Supongo que% cd% se refiere al directorio actual. ¿Cómo puedo hacer referencia a una ruta diferente en mi sistema local? no funciona cuando uso una ruta. "./example/path/"
seanbun
1
Usé la ruta absoluta al directorio de archivos para que -Source funcione para mí. No incluí el nombre del paquete.
mac10688
146

Los archivos NuPKG son solo archivos zip, por lo que cualquier cosa que pueda procesar un archivo zip debería poder procesar un archivo nupkg, es decir, 7zip.

Calvin Allen
fuente
15
Hay una condición con esto, que es que NuGet parece hacer algún tipo de codificación de nombres de archivos. Por lo tanto, si usa una herramienta zip, un archivo que originalmente llamó "A + B.txt", por ejemplo, se extraerá como "A% 2B.txt". Esto se evita usando nuget install (según la respuesta de Andy)
Oli Wennell
1
el problema de codificación del archivo se solucionó en 4.7.0+
Fai
15

Cambie el nombre a .zip , luego extráigalo.

Shadi Namrouti
fuente
Esta es una pregunta muy antigua, y si simplemente la cambia a un archivo zip que no responde a la pregunta, si usa una herramienta zip, un archivo que originalmente llamó "A + B.txt", por ejemplo, se extraerá como "A % 2B.txt ": tampoco es necesario cambiarle el nombre a zip.
Lewis
4

hizo lo mismo como esto:

clear
cd PACKAGE_DIRECTORY

function Expand-ZIPFile($file, $destination)
{
    $shell = New-Object -ComObject Shell.Application
    $zip = $shell.NameSpace($file)
    foreach($item in $zip.items())
    {
        $shell.Namespace($destination).copyhere($item)
    }
}

Dir *.nupkg | rename-item -newname {  $_.name  -replace ".nupkg",".zip"  }

Expand-ZIPFile "Package.1.0.0.zip" “DESTINATION_PATH”
UsmanShabbir
fuente
2
¿No padece este el mismo problema que Oli Wennell mencionó anteriormente? es decir, "A + B.txt", por ejemplo, se extraerá como "A% 2B.txt".
Rahatur
1

Con PowerShell 5.1 (módulo PackageManagement)

Install-Package -Name MyPackage -Source (Get-Location).Path -Destination C:\outputdirectory
Mariusz
fuente
0

Esto funcionó para mí:

Rename-Item -Path A_Package.nupkg -NewName A_Package.zip

Expand-Archive -Path A_Package.zip -DestinationPath C:\Reference
christiandersen
fuente