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é?

Lewis
la source

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.

Andy
la source
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.

Calvin Allen
la source
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.

Shadi Namrouti
la source
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”
UsmanShabbir
la source
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
Mariusz
la source
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
Christiandersen
la source