Giải nén tệp Nupkg bằng dòng lệnh


105

Thứ nhất, tôi không muốn sử dụng Visual Studio khi xử lý các tệp .nupkg nhất định.

Tôi biết có một công cụ tên là NuGet Package Explorer và công cụ này có thể xuất các tệp nupkg sang một vị trí tệp nhất định bằng cách sử dụng gui, nhưng tôi đang tìm cách thiết lập một tác vụ MSBuild để chạy và giải nén khoảng 50 tệp .nupkg bằng dòng lệnh.

Câu hỏi của tôi là, có công cụ nào bạn có thể sử dụng thông qua dòng lệnh sẽ giải nén các tệp .nupkg vào một vị trí tệp được chỉ định không?

Câu trả lời:


106

Bạn cũng có thể sử dụng dòng lệnh NuGet, bằng cách chỉ định máy chủ cục bộ như một phần của quá trình cài đặt. Ví dụ: nếu gói của bạn được lưu trữ trong thư mục hiện tại

nuget install MyPackage -Source %cd% -OutputDirectory packages

sẽ giải nén nó vào thư mục đích.


14
Chỉ cần lưu ý rằng MyPackage thực sự là ID gói được chỉ định trong tệp .nuspec chứ không phải tên tệp.
Rod

và bạn phải thực hiện nó từ giao diện điều khiển với quyền admin
Sonic linh hồn

7
Fwiw, trong PowerShell lệnh trông giống như: NuGet cài đặt mypackage -Nguồn $ pwd -OutputDirectory gói
Đánh dấu Boltuc

Tôi đoán% cd% đang tham chiếu đến thư mục hiện tại. Làm cách nào để tham khảo đường dẫn khác trong hệ thống cục bộ của tôi? nó không hoạt động khi tôi sử dụng một đường dẫn. "./example/path/"
seanbun

1
Tôi đã sử dụng đường dẫn tuyệt đối đến thư mục tệp để lấy -Source làm việc cho tôi. Tôi đã không bao gồm tên gói.
mac10688

146

Các tệp NuPKG chỉ là tệp zip, vì vậy bất kỳ thứ gì có thể xử lý tệp zip đều có thể xử lý tệp nupkg, tức là 7zip.


15
Có một điều kiện xảy ra với điều này, đó là NuGet dường như thực hiện một số loại mã hóa tên tệp. Vì vậy, nếu bạn sử dụng công cụ zip, ví dụ: tệp bạn có tên ban đầu là "A + B.txt" sẽ được trích xuất dưới dạng "A% 2B.txt". Đây là tránh được bằng cách sử dụng NuGet cài đặt (như mỗi câu trả lời của Andy)
Oli Wennell

1
sự cố mã hóa tệp đã được khắc phục trong 4.7.0+
Fai

15

Đổi tên nó thành .zip , sau đó giải nén nó.


Đây là một câu hỏi cực kỳ cũ và nếu bạn chỉ thay đổi nó thành tệp zip sẽ không trả lời được câu hỏi, nếu bạn sử dụng công cụ zip, tệp mà bạn đặt tên ban đầu là "A + B.txt" chẳng hạn sẽ được trích xuất thành "A % 2B.txt "- Bạn cũng không cần đổi tên nó thành zip.
Lewis

4

đã làm điều tương tự như thế này:

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
Bạn đã từng mắc phải vấn đề tương tự như Oli Wennell đã đề cập ở trên? tức là "A + B.txt" chẳng hạn sẽ được trích xuất thành "A% 2B.txt"?
Rahatur

1

Với PowerShell 5.1 (Mô-đun PackageManagement)

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

0

Điều này đã làm việc cho tôi:

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

Expand-Archive -Path A_Package.zip -DestinationPath C:\Reference
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.