Extrahieren von Nupkg-Dateien über die Befehlszeile

105

Erstens möchte ich Visual Studio überhaupt nicht verwenden, wenn ich mit bestimmten .nupkg-Dateien arbeite.

Ich weiß, dass es ein Tool namens NuGet Package Explorer gibt, mit dem Nupkg-Dateien mithilfe einer GUI an einen bestimmten Speicherort exportiert werden können. Ich möchte jedoch eine MSBuild-Task einrichten, um über die Befehlszeile etwa 50 .nupkg-Dateien auszuführen und zu entpacken.

Meine Frage ist, gibt es ein Tool, das Sie über die Befehlszeile verwenden können, um .nupkg-Dateien an einen bestimmten Speicherort zu entpacken?

Lewis
quelle

Antworten:

106

Sie können auch die NuGet-Befehlszeile verwenden, indem Sie einen lokalen Host als Teil einer Installation angeben. Zum Beispiel, wenn Ihr Paket im aktuellen Verzeichnis gespeichert ist

nuget install MyPackage -Source %cd% -OutputDirectory packages

entpackt es in das Zielverzeichnis.

Andy
quelle
14
Nur ein Hinweis, dass MyPackage tatsächlich eine Paket-ID ist, die in der .nuspec-Datei angegeben ist, und kein Dateiname.
Rod
und Sie müssen es von der Konsole mit Administratorrechten ausführen
Sonic Soul
7
Fwiw, in Powershell sieht der Befehl wie folgt aus: nuget install MyPackage -Source $ pwd -OutputDirectory-Pakete
Mark Boltuc
Ich denke,% cd% bezieht sich auf das aktuelle Verzeichnis. Wie kann ich in meinem lokalen System auf einen anderen Pfad verweisen? Es funktioniert nicht, wenn ich einen Pfad benutze. "./example/path/"
Seanbun
1
Ich habe den absoluten Pfad zum Dateiverzeichnis verwendet, damit die Quelle für mich funktioniert. Ich habe den Paketnamen nicht angegeben.
Mac10688
146

NuPKG-Dateien sind nur Zip-Dateien, daher sollte alles, was eine Zip-Datei verarbeiten kann, eine Nupkg-Datei verarbeiten können, dh 7zip.

Calvin Allen
quelle
15
Dies hat den Vorbehalt, dass NuGet scheinbar eine Art Kodierung von Dateinamen vornimmt. Wenn Sie also ein Zip-Tool verwenden, wird eine Datei, die Sie ursprünglich "A + B.txt" genannt haben, als "A% 2B.txt" extrahiert. Dies wird durch die Verwendung von Nuget Install (gemäß Andys Antwort) vermieden
Oli Wennell
1
Das Problem mit der Dateicodierung wurde in 4.7.0+
Fai
15

Benennen Sie es in .zip um und extrahieren Sie es dann.

Shadi Namrouti
quelle
Dies ist eine extrem alte Frage. Wenn Sie sie nur in eine Zip-Datei ändern, die die Frage nicht beantwortet, wird bei Verwendung eines Zip-Tools eine Datei mit dem ursprünglichen Namen "A + B.txt" als "A" extrahiert % 2B.txt "- Sie müssen es auch nicht in zip umbenennen.
Lewis
4

tat das gleiche wie folgt:

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
quelle
2
Hat dies das gleiche Problem wie das oben erwähnte Oli Wennell? dh "A + B.txt" wird zum Beispiel als "A% 2B.txt" extrahiert?
Rahatur
1

Mit PowerShell 5.1 (PackageManagement-Modul)

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

Das hat bei mir funktioniert:

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

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