การแตกไฟล์ Nupkg โดยใช้บรรทัดคำสั่ง


105

ประการแรกฉันไม่ต้องการใช้ Visual Studio เลยเมื่อจัดการกับไฟล์. nupkg บางไฟล์

ฉันรู้ว่ามีเครื่องมือที่เรียกว่า NuGet Package Explorer และสิ่งนี้สามารถส่งออกไฟล์ nupkg ไปยังตำแหน่งไฟล์บางตำแหน่งโดยใช้ gui แต่ฉันต้องการตั้งค่างาน MSBuild เพื่อเรียกใช้และคลายไฟล์ประมาณ 50 .nupkg โดยใช้บรรทัดคำสั่ง

คำถามของฉันคือมีเครื่องมือที่คุณสามารถใช้ผ่านทางบรรทัดคำสั่งซึ่งจะคลายไฟล์. nupkg ไปยังตำแหน่งไฟล์ที่ระบุหรือไม่?

คำตอบ:


106

คุณยังสามารถใช้บรรทัดคำสั่ง NuGet โดยระบุโลคัลโฮสต์เป็นส่วนหนึ่งของการติดตั้ง ตัวอย่างเช่นหากแพ็คเกจของคุณถูกเก็บไว้ในไดเร็กทอรีปัจจุบัน

nuget install MyPackage -Source %cd% -OutputDirectory packages

จะแตกไฟล์ลงในไดเร็กทอรีเป้าหมาย


15
โปรดทราบว่าจริงๆแล้ว MyPackage เป็น ID แพ็คเกจที่ระบุไว้ในไฟล์. nuspec ไม่ใช่ชื่อไฟล์
Rod

และคุณต้องดำเนินการจากคอนโซลด้วยสิทธิ์ของผู้ดูแลระบบ
Sonic Soul

7
Fwiw ใน powershell คำสั่งดูเหมือนว่า: nuget install MyPackage -Source $ pwd -OutputDirectory Packages
Mark Boltuc

ฉันเดาว่า% cd% หมายถึงไดเร็กทอรีปัจจุบัน ฉันจะอ้างถึงเส้นทางอื่นในระบบภายในของฉันได้อย่างไร มันไม่ทำงานเมื่อฉันใช้เส้นทาง "./example/path/"
seanbun

1
ฉันใช้พา ธ สัมบูรณ์ไปยังไดเร็กทอรีไฟล์เพื่อให้ -Source ทำงานให้ฉัน ฉันไม่ได้ระบุชื่อแพ็กเกจ
mac10688

146

ไฟล์ NuPKG เป็นเพียงไฟล์ zip ดังนั้นสิ่งใดก็ตามที่สามารถประมวลผลไฟล์ zip ควรจะสามารถประมวลผลไฟล์ nupkg ได้เช่น 7zip


15
มีเงื่อนไขในเรื่องนี้ซึ่งก็คือ NuGet ดูเหมือนจะทำการเข้ารหัสชื่อไฟล์บางประเภท ดังนั้นหากคุณใช้เครื่องมือ zip ไฟล์ที่คุณมีชื่อเดิมว่า "A + B.txt" เช่นจะแตกเป็น "A% 2B.txt" สิ่งนี้หลีกเลี่ยงได้โดยใช้ nuget install (ตามคำตอบของ Andy)
Oli Wennell

1
ปัญหาการเข้ารหัสไฟล์ได้รับการแก้ไขแล้วใน 4.7.0+
Fai

15

เปลี่ยนชื่อเป็น. zipจากนั้นแตกไฟล์


นี่เป็นคำถามที่เก่ามากและหากคุณเพิ่งเปลี่ยนเป็น zip ซึ่งจะไม่ตอบคำถามหากคุณใช้เครื่องมือ zip ไฟล์ที่คุณชื่อ "A + B.txt" เดิมจะถูกแตกออกเป็น "A % 2B.txt "- คุณไม่จำเป็นต้องเปลี่ยนชื่อเป็น zip
Lewis

4

ทำสิ่งเดียวกันเช่นนี้:

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
สิ่งนี้ประสบปัญหาเดียวกันกับที่ Oli Wennell กล่าวถึงข้างต้นหรือไม่? เช่น "A + B.txt" จะแยกเป็น "A% 2B.txt"?
Rahatur

1

ด้วย PowerShell 5.1 (โมดูล PackageManagement)

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

1

สิ่งนี้ใช้ได้ผลสำหรับฉัน:

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

Expand-Archive -Path A_Package.zip -DestinationPath C:\Reference
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.