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?

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.


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.


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.


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”

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

0

Esto funcionó para mí:

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

Expand-Archive -Path A_Package.zip -DestinationPath C:\Reference
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.