2015-02-19 10 views
40

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

उत्तर

1

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

स्थापना रद्द-पैकेज OpenIdPortableArea -RemoveDependencies

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

+3

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

57

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

get-पैकेज | स्थापना रद्द पैकेज -removedependencies

+7

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

+4

चेतावनी: यह सराहना पूरे समाधान के भीतर सभी संकुलों को अनइंस्टॉल कर देगी। – Jacob

42

शायद ज़रुरत पड़े किसी एक समाधान के भीतर एक विशेष परियोजना से सभी पैकेजों को निकालना चाहता है, यहाँ आदेश है:

Get-Package -ProjectName "YourProjectName" | Uninstall-Package -ProjectName "YourProjectName" -RemoveDependencies 
+14

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

10

आप से हर 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 ($ पैकेज में $ पैकेज) {अनइंस्टॉल-पैकेज -प्रोजेक्टनाम MyProjectName -Id $ package.Id -Force} ' –

12

इस प्रयास करें:

get-package | uninstall-package -removedependencies -force 
1

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

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

उल्लेखनीय है कि मैंने पैकेजमैनेजर कंसोल में केवल निम्न PowerShell स्निपेट का परीक्षण किया है। एक समाधान

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

केवल हटाने परियोजनाओं शब्द वाले सभी परियोजनाओं से ("उपकरण> NuGet पैकेज प्रबंधक> पैकेज प्रबंधक कंसोल")

स्थापना रद्द करें सभी संकुल "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 } 

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

संबंधित मुद्दे