मुझे पता है कि मैं PM कंसोल से अनइंस्टॉल-पैकेज कर सकता हूं। मैं एक और परियोजना के साथ कुछ निर्भरता के मुद्दों में मिला और मैं शुरू करना चाहता हूं, और मुझे एक शॉट में सभी पैकेजों को हटाने की आवश्यकता है। क्या उधर रास्ता है?
जवाबों:
समाधान उपयोग में सभी परियोजनाओं से सभी पैकेज प्राप्त करने के लिए Get-Package
। किसी विशिष्ट प्रोजेक्ट उपयोग से सभी पैकेज प्राप्त करने के लिए Get-Package -ProjectName "YourProjectName"
।
सावधान रहें: यह समाधान में सभी संकुल की स्थापना रद्द करेगा । यदि पैरामीटर का उपयोग किया जाता है, तो निर्भरता मौजूद होने पर भी पैकेज हटा दिए जाते हैं।
-Force
Get-Package | Uninstall-Package -RemoveDependencies -Force
सावधान रहें: यह परियोजना में सभी संकुल की स्थापना रद्द करेगा । यदि पैरामीटर का उपयोग किया जाता है, तो निर्भरता मौजूद होने पर भी पैकेज हटा दिए जाते हैं।
-Force
Get-Package -ProjectName "YourProjectName" |
Uninstall-Package -ProjectName "YourProjectName" -RemoveDependencies -Force
-force
। इसने मेरे लिए काम किया।
यदि आप किसी समाधान में प्रत्येक प्रोजेक्ट से प्रत्येक 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} }
$packages = Get-Package -ProjectName MyProjectName; foreach($package in $packages){ Uninstall-Package -ProjectName MyProjectName -Id $package.Id -Force}
मेरे मामले में -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 }
ध्यान दें कि यदि आपके पास निर्भर पैकेज से अलग एक और समस्या है तो पैकेज के अनइंस्टॉल को रोकने से यह स्निपेट हमेशा के लिए चलेगा जब तक कि आप इसे मैन्युअल रूप से रोक नहीं देते।
मेरा मानना है कि यह संभव नहीं है इसलिए एक ही बार में सभी पैकेजों को स्थापित करें। हालाँकि, जैसा कि आपने पहले ही संकेत दिया है कि आप पैकेज को अन-इंस्टॉल कर सकते हैं, लेकिन आप इसे निम्न करने के लिए अपनी निर्भरता को स्थापित करने के लिए भी कह सकते हैं:
स्थापना रद्द-पैकेज OpenIdPortableArea –Remove पर निर्भरताएँ
यहाँ मार्कस हैमरबर्ग का एक ब्लॉग यह समझा रहा है: http://www.marcusoft.net/2011/02/nuget-uninstall-remove-dependencies.html
पाश के लिए डमी पुराने स्कूल:
$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++
}
}
वीएस समाधान में एकल परियोजना के लिए सभी नगेट पैकेजों को हटाने के लिए एक स्क्रिप्ट अपडेट किया गया:
$projectName = "MyProjectName"; $packages = Get-Package -ProjectName $projectName; foreach($package in $packages){ Uninstall-Package -ProjectName $projectName -Id $package.Id -Force}