Extraction de fichiers Nupkg à l'aide de la ligne de commande


105

Premièrement, je ne veux pas du tout utiliser Visual Studio lorsque je traite certains fichiers .nupkg.

Je sais qu'il existe un outil appelé NuGet Package Explorer et qu'il peut exporter des fichiers nupkg vers un certain emplacement de fichier à l'aide d'une interface graphique, mais je cherche à configurer une tâche MSBuild pour exécuter et décompresser environ 50 fichiers .nupkg, en utilisant la ligne de commande.

Ma question est la suivante: existe-t-il un outil que vous pouvez utiliser via la ligne de commande qui décompressera les fichiers .nupkg vers un emplacement de fichier spécifié?

Réponses:


106

Vous pouvez également utiliser la ligne de commande NuGet, en spécifiant un hôte local dans le cadre d'une installation. Par exemple, si votre package est stocké dans le répertoire courant

nuget install MyPackage -Source %cd% -OutputDirectory packages

va le décompresser dans le répertoire cible.


15
Notez simplement que MyPackage est en fait un ID de package spécifié dans le fichier .nuspec et non un nom de fichier.
Rod

et vous devez l'exécuter à partir de la console avec des privilèges d'administrateur
Sonic Soul

7
Fwiw, dans PowerShell, la commande ressemble à: nuget install MyPackage -Source $ pwd -OutputDirectory packages
Mark Boltuc

Je suppose que% cd% fait référence au répertoire actuel. Comment puis-je faire référence à un chemin différent dans mon système local? cela ne fonctionne pas lorsque j'utilise un chemin. "./example/path/"
seanbun

1
J'ai utilisé le chemin absolu vers le répertoire de fichiers pour que la -Source fonctionne pour moi. Je n'ai pas inclus le nom du package.
mac10688

146

Les fichiers NuPKG ne sont que des fichiers zip, donc tout ce qui peut traiter un fichier zip devrait pouvoir traiter un fichier nupkg, c'est-à-dire 7zip.


15
Il y a une condition à cela, à savoir que NuGet semble faire une sorte d'encodage des noms de fichiers. Ainsi, si vous utilisez un outil zip, un fichier que vous avez nommé à l'origine "A + B.txt" par exemple sera extrait en tant que "A% 2B.txt". Cela est évité en utilisant l'installation de nuget (selon la réponse d'Andy)
Oli Wennell

1
le problème d'encodage de fichier a été corrigé dans 4.7.0+
Fai

15

Renommez-le en .zip , puis extrayez-le.


C'est une question extrêmement ancienne, et si vous la remplacez simplement par un zip qui ne répondra pas à la question, si vous utilisez un outil zip, un fichier que vous avez initialement nommé "A + B.txt" par exemple sera extrait sous la forme "A % 2B.txt "- Vous n'avez pas non plus besoin de le renommer en zip.
Lewis

4

fait la même chose comme ceci:

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
Dosent cela souffre du même problème que celui mentionné ci-dessus par Oli Wennell? ie "A + B.txt" par exemple sera extrait comme "A% 2B.txt"?
Rahatur

1

Avec PowerShell 5.1 (module PackageManagement)

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

0

Cela a fonctionné pour moi:

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

Expand-Archive -Path A_Package.zip -DestinationPath C:\Reference
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.