Mengekstrak file Nupkg menggunakan baris perintah


105

Pertama, saya tidak ingin menggunakan Visual Studio sama sekali ketika berurusan dengan file .nupkg tertentu.

Saya tahu ada alat yang disebut NuGet Package Explorer dan ini dapat mengekspor file nupkg ke lokasi file tertentu menggunakan gui, tetapi saya ingin menyiapkan tugas MSBuild untuk menjalankan dan membongkar sekitar 50 file .nupkg, menggunakan baris perintah.

Pertanyaan saya adalah, apakah ada alat yang dapat Anda gunakan melalui baris perintah yang akan membongkar file .nupkg ke lokasi file yang ditentukan?

Jawaban:


106

Anda juga dapat menggunakan baris perintah NuGet, dengan menentukan host lokal sebagai bagian dari instalasi. Misalnya jika paket Anda disimpan di direktori saat ini

nuget install MyPackage -Source %cd% -OutputDirectory packages

akan mengekstraknya ke direktori target.


15
Perlu diketahui bahwa MyPackage sebenarnya adalah ID Paket yang ditentukan dalam file .nuspec dan bukan nama file.
Batang

dan Anda harus menjalankannya dari konsol dengan hak istimewa admin
Sonic Soul

7
Fwiw, di PowerShell perintahnya terlihat seperti: nuget install MyPackage -Source $ pwd -OutputDirectory packages
Mark Boltuc

Saya kira% cd% mengacu pada direktori saat ini. Bagaimana saya bisa merujuk ke jalur yang berbeda di sistem lokal saya? itu tidak berfungsi saat saya menggunakan jalur. "./example/path/"
seanbun

1
Saya menggunakan jalur absolut ke direktori file agar -Sumber berfungsi untuk saya. Saya tidak menyertakan nama paket.
mac10688

146

File NuPKG hanyalah file zip, jadi apa pun yang dapat memproses file zip harus dapat memproses file nupkg, yaitu 7zip.


15
Ada syaratnya, yaitu NuGet tampaknya melakukan semacam pengkodean nama file. Jadi, jika Anda menggunakan alat zip, file yang awalnya Anda beri nama "A + B.txt" misalnya akan diekstrak sebagai "A% 2B.txt". Ini dihindari dengan menggunakan nuget install (sesuai jawaban Andy)
Oli Wennell

1
masalah pengkodean file diperbaiki di 4.7.0+
Fai

15

Ubah namanya menjadi .zip , lalu ekstrak.


Ini adalah pertanyaan yang sangat lama, dan jika Anda hanya mengubahnya menjadi zip yang tidak akan menjawab pertanyaan tersebut, jika Anda menggunakan alat zip, file yang awalnya Anda beri nama "A + B.txt" misalnya akan diekstrak sebagai "A % 2B.txt "- Anda juga tidak perlu mengganti namanya menjadi zip.
Lewis

4

melakukan hal yang sama seperti ini:

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
Bukankah ini mengalami masalah yang sama seperti yang disebutkan Oli Wennell di atas? yaitu "A + B.txt" misalnya akan diekstraksi sebagai "A% 2B.txt"?
Rahatur

1

Dengan PowerShell 5.1 (modul PackageManagement)

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

0

Ini berhasil untuk saya:

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

Expand-Archive -Path A_Package.zip -DestinationPath C:\Reference
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.