मैं Visual Studio में एक समाधान से * सभी * nuget संकुल की स्थापना रद्द कैसे करूँ


90

मुझे पता है कि मैं PM कंसोल से अनइंस्टॉल-पैकेज कर सकता हूं। मैं एक और परियोजना के साथ कुछ निर्भरता के मुद्दों में मिला और मैं शुरू करना चाहता हूं, और मुझे एक शॉट में सभी पैकेजों को हटाने की आवश्यकता है। क्या उधर रास्ता है?

जवाबों:


132

समाधान उपयोग में सभी परियोजनाओं से सभी पैकेज प्राप्त करने के लिए Get-Package। किसी विशिष्ट प्रोजेक्ट उपयोग से सभी पैकेज प्राप्त करने के लिए Get-Package -ProjectName "YourProjectName"


समाधान में सभी परियोजनाओं से सभी पैकेज निकालें

सावधान रहें: यह समाधान में सभी संकुल की स्थापना रद्द करेगा । यदि पैरामीटर का उपयोग किया जाता है, तो निर्भरता मौजूद होने पर भी पैकेज हटा दिए जाते हैं।-Force

Get-Package | Uninstall-Package -RemoveDependencies -Force


एक समाधान के भीतर एक विशिष्ट परियोजना से सभी संकुल निकालें

सावधान रहें: यह परियोजना में सभी संकुल की स्थापना रद्द करेगा । यदि पैरामीटर का उपयोग किया जाता है, तो निर्भरता मौजूद होने पर भी पैकेज हटा दिए जाते हैं।-Force

Get-Package -ProjectName "YourProjectName" | 
Uninstall-Package -ProjectName "YourProjectName" -RemoveDependencies -Force

27
मैं अंत में -Force पैरामीटर जोड़ने की सलाह देता हूं। इसके बिना, मैं अन्य NuGet पैकेजों के साथ निर्भरता के आधार पर अपनी सभी निर्भरता की स्थापना रद्द नहीं कर सकता।
सीन

यही असली जवाब है। उपयोग करने के शॉन के सुझाव के साथ संयुक्त -force। इसने मेरे लिए काम किया।
स्पाइक

86

पैकेज मैनेजर कंसोल में बस टाइप करें:

get-package | अनइंस्टॉल-पैकेज-अतिनिर्भरता


14
जटिल निर्भरता ग्राफ में फंसने के लिए, -Forceस्विच का उपयोग न करें।
एलिर्ज़ा

12
चेतावनी: यह सराहा संपूर्ण समाधान के भीतर सभी संकुल की स्थापना रद्द कर देगा।
याकूब

31

इसे इस्तेमाल करे:

get-package | uninstall-package -removedependencies -force

15

यदि आप किसी समाधान में प्रत्येक प्रोजेक्ट से प्रत्येक NuGet पैकेज की स्थापना रद्द करना चाहते हैं, तो NuGet पैकेज प्रबंधक कंसोल में इसका उपयोग करें:

foreach($project in $projects){ $packages = Get-Package -ProjectName $project.Name; foreach($package in $packages){ Uninstall-Package -ProjectName $project.Name -Id $package.Id -Force} }

4
बहुत बढ़िया जवाब। एक एकल परियोजना के लिए स्क्रिप्ट:$packages = Get-Package -ProjectName MyProjectName; foreach($package in $packages){ Uninstall-Package -ProjectName MyProjectName -Id $package.Id -Force}
मोहसिन अफशीन

10

मेरे मामले में -Force पैरामीटर का उपयोग करना परियोजना फ़ाइल संशोधनों और कुछ बायनेरिज़ के संदर्भों को छोड़ देता है जिन्हें सामान्य रूप से संकुल की स्थापना रद्द करते समय हटा दिया जाना चाहिए था।

यहाँ -Force पैरामीटर का उपयोग किए बिना विशिष्ट परियोजनाओं से सभी पैकेजों की स्थापना रद्द करने की एक भोली विधि है। प्रभावी रूप से यह संकुल को बार-बार अनइंस्टॉल करने की कोशिश करता है जब तक कोई पैकेज नहीं बचा है, इसलिए आपको आश्रित पैकेजों (यदि आपके पास है) का उल्लेख करने में कुछ त्रुटियां दिखाई देंगी, लेकिन वे कम और कम हो जाएंगे क्योंकि पत्ती पैकेज प्रत्येक पुनरावृत्ति को हटा देते हैं।

यह भी उल्लेख के लायक है कि मैंने केवल पैकेजमेन्जर कंसोल में निम्नलिखित पावरस्लिप स्निपेट का परीक्षण किया है। ("टूल्स> नुगेट पैकेज मैनेजर> पैकेज मैनेजर कंसोल")

एक समाधान में सभी परियोजनाओं से सभी संकुल की स्थापना रद्द करें

while((Get-Project -All | Get-Package).Length -gt 0) { Get-Project -All | Get-Package | Uninstall-Package }

केवल " WildCardSearch " शब्द वाली परियोजनाओं को हटा दें

while((Get-Project -All | Where-Object ProjectName -like '*WildCardSearch*'  | Get-Package).Length -gt 0) { Get-Project -All | Where-Object ProjectName -like '*WildCardSearch*' | Get-Package | Uninstall-Package }

ध्यान दें कि यदि आपके पास निर्भर पैकेज से अलग एक और समस्या है तो पैकेज के अनइंस्टॉल को रोकने से यह स्निपेट हमेशा के लिए चलेगा जब तक कि आप इसे मैन्युअल रूप से रोक नहीं देते।


3

मेरा मानना ​​है कि यह संभव नहीं है इसलिए एक ही बार में सभी पैकेजों को स्थापित करें। हालाँकि, जैसा कि आपने पहले ही संकेत दिया है कि आप पैकेज को अन-इंस्टॉल कर सकते हैं, लेकिन आप इसे निम्न करने के लिए अपनी निर्भरता को स्थापित करने के लिए भी कह सकते हैं:

स्थापना रद्द-पैकेज OpenIdPortableArea –Remove पर निर्भरताएँ

यहाँ मार्कस हैमरबर्ग का एक ब्लॉग यह समझा रहा है: http://www.marcusoft.net/2011/02/nuget-uninstall-remove-dependencies.html


3
"निकालें निर्भरताएँ" तब काम करती है जब 1 पैकेज कई अन्य पर निर्भर करता है। यह काम नहीं करता है जब एन संकुल कोर एक (जैसे बूस्ट) पर निर्भर करता है। आपको मैन्युअल रूप से एक-एक करके NuGet Boost पैकेज को हटाने की आवश्यकता है, जो एक दर्द है।
मात्रा_देव

1

पाश के लिए डमी पुराने स्कूल:

$packages = get-package
$packageId = "Apache.NMS.ActiveMQ"


$counter = 1
foreach($package in $packages){     
    if($package.Id -eq $packageId)
    {   
        Write-Host "`n$counter-Deleting Package:`n"
        $package        
        Uninstall-Package -Id $packageId -ProjectName $package.ProjectName -RemoveDependencies 
        Write-Host "`n============================================`n"
        $counter++
    }
}

1

वीएस समाधान में एकल परियोजना के लिए सभी नगेट पैकेजों को हटाने के लिए एक स्क्रिप्ट अपडेट किया गया:

$projectName = "MyProjectName"; $packages = Get-Package -ProjectName $projectName; foreach($package in $packages){ Uninstall-Package -ProjectName $projectName -Id $package.Id -Force}

0

पैकेज प्रबंधक कंसोल का उपयोग करके किसी प्रोजेक्ट में पैकेज की ऑटो-रिस्टोरिंग (स्थापना रद्द करें और फिर इंस्टॉल करें):

अद्यतन-पैकेज-स्थापना रद्द करें

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