कमांड लाइन का उपयोग करके Nupkg फाइल निकालना


105

सबसे पहले, मैं कुछ .nupkg फ़ाइलों के साथ काम करते समय विज़ुअल स्टूडियो का उपयोग नहीं करना चाहता।

मुझे पता है कि एक उपकरण है जिसे NuGet Package Explorer कहा जाता है और यह एक gui का उपयोग करके एक निश्चित फ़ाइल स्थान पर nupkg फ़ाइलों को निर्यात कर सकता है, लेकिन मैं कमांड लाइन का उपयोग करके लगभग 50 .nupkg फ़ाइलों को चलाने और अनपैक करने के लिए MSBuild कार्य सेटअप कर रहा हूं।

मेरा सवाल यह है कि क्या कोई उपकरण है जिसे आप कमांड लाइन के माध्यम से उपयोग कर सकते हैं जो एक निर्दिष्ट फ़ाइल स्थान पर .nupkg फ़ाइलों को अनपैक करेगा?

जवाबों:


106

आप स्थानीय होस्ट को इंस्टॉल के भाग के रूप में निर्दिष्ट करके, NuGet कमांड लाइन का भी उपयोग कर सकते हैं। उदाहरण के लिए यदि आपका पैकेज वर्तमान निर्देशिका में संग्रहीत है

nuget install MyPackage -Source %cd% -OutputDirectory packages

इसे लक्ष्य निर्देशिका में अनपैक करेंगे।


15
बस ध्यान दें कि MyPackage वास्तव में एक पैकेज आईडी है जो कि .nuspec फ़ाइल में निर्दिष्ट है और फ़ाइल नाम नहीं है।
रॉड

और आपको इसे व्यवस्थापक विशेषाधिकारों के साथ कंसोल से निष्पादित करना होगा
सोनिक सोल

7
Fwiw, में पॉवरशेल कमांड की तरह दिखता है: nuget इंस्टॉल करें MyPackage -Source $ pwd -OutputDirectory package
Mark Boltuc

मुझे लगता है कि% cd% वर्तमान निर्देशिका का जिक्र है। मैं अपने स्थानीय सिस्टम में विभिन्न पथों का उल्लेख कैसे कर सकता हूं? जब मैं किसी पथ का उपयोग करता हूं तो यह काम नहीं करता है। "./example/path/"
सीनबुन

1
मैं फ़ाइल निर्देशिका के लिए निरपेक्ष पथ का उपयोग करने के लिए स्रोत प्राप्त करने के लिए मेरे लिए काम करते हैं। मैंने पैकेज का नाम शामिल नहीं किया।
mac10688

146

NuPKG फाइलें सिर्फ ज़िप फाइलें होती हैं, इसलिए जिप फाइल को प्रोसेस करने वाली कोई भी चीज नूपएग फाइल यानी 7zip को प्रोसेस करने में सक्षम होनी चाहिए।


15
इसके साथ एक प्रोविज़ो है, जो यह है कि नुगेट कुछ प्रकार के फ़ाइल नाम की एन्कोडिंग करता है। इसलिए, यदि आप एक जिप टूल का उपयोग करते हैं, तो आपके द्वारा "ए + बी.टेक्स्ट" नाम की एक फाइल को "ए% 2 बी.टैक्स" के रूप में निकाला जाएगा। इसे नुगेट इन्स्टॉल (एंडी के जवाब के अनुसार) के उपयोग से बचा जाता है
ओली वेन्नेल जूल

1
फ़ाइल एन्कोडिंग मुद्दा 4.7.0+
Fai

15

इसे .zip का नाम बदलें , फिर इसे निकालें।


यह एक बहुत पुराना प्रश्न है, और यदि आप इसे केवल एक ज़िप में बदल देते हैं जो प्रश्न का उत्तर नहीं देगा, यदि आप एक ज़िप उपकरण का उपयोग करते हैं, तो एक फ़ाइल जिसे आपने मूल रूप से "A + B.txt" नाम दिया है, उदाहरण के लिए "A" के रूप में निकाला जाएगा। % 2B.txt "- आपको इसे ज़िप करने के लिए नाम बदलने की भी आवश्यकता नहीं है।
लुईस

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
Dosent यह उसी समस्या से ग्रस्त है जैसा कि Oli Wennell ने ऊपर उल्लेख किया है? उदाहरण के लिए "A + B.txt" को "A% 2B.txt" के रूप में निकाला जाएगा?
रहटुर

1

PowerShell 5.1 (पैकेज प्रबंधन मॉड्यूल) के साथ

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

0

यह मेरे लिए काम किया:

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

Expand-Archive -Path A_Package.zip -DestinationPath C:\Reference
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.