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?

Lewis
sumber

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.

Andy
sumber
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.

Calvin Allen
sumber
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.

Shadi Namrouti
sumber
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”
UsmanShabbir
sumber
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
Mariusz
sumber
0

Ini berhasil untuk saya:

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

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