ฉันจะลบแพ็คเกจ NuGet ที่ไม่ได้อ้างอิงโดยโครงการใด ๆ ในโซลูชันของฉันได้อย่างไร


141

ยังไงก็ตามระหว่างการอัพเกรดเป็น VS2012 และ. NET 4.5 ฉันจัดการเพื่อทำให้ NuGet สับสนได้ มีแพ็คเกจที่ปรากฏในเครื่องมือจัดการแพคเกจ (และโฟลเดอร์แพ็คเกจ) ที่ฉันไม่สามารถลบได้ (ฉันเชื่อว่าเป็นแพ็คเกจ ASP.NET NuGet ดั้งเดิมที่ถูกแทนที่ด้วยชื่อแพ็คเกจใหม่ด้วยรุ่นใหม่แต่ละตัวมี ปุ่มจัดการเท่านั้น- แต่ไม่มีปุ่มถอนการติดตั้งและเมื่อคุณดูว่ามีการใช้งานที่ไหนคุณจะเห็นว่ามันถูกอ้างอิงโดยไม่มีโปรเจ็กต์ของโซลูชันหรือไม่พวกเขาไม่ได้แสดงการถอนการติดตั้ง

คำตอบ:


108

คุณสามารถใช้ Package Manager Console พร้อมคำสั่ง: Uninstall-Package PackageIdเพื่อลบหรือเพียงแค่ลบโฟลเดอร์แพ็คเกจจากโฟลเดอร์ 'แพ็คเกจ' ภายใต้โฟลเดอร์โซลูชัน ข้อมูลเพิ่มเติมเกี่ยวกับ Package Manager Console คุณสามารถค้นหาได้ที่นี่: http://docs.nuget.org/docs/reference/package-manager-console-powershell-reference


8
ขอบคุณพาเวล ฉันรู้สึกว่าคุณสามารถลบโฟลเดอร์ได้ มันน่าสับสนเล็กน้อยเพราะฉันต้องตรวจสอบให้แน่ใจด้วยตนเองว่าไม่มีแพ็คเกจใดที่ถูกอ้างอิง (ดูเหมือนจะไม่เป็น) ฉันยังอยากรู้อยากเห็นว่าทำไมผู้จัดการแพคเกจไม่แสดงปุ่มถอนการติดตั้ง (หรือลบ)
Howard Pinsley

2
ตัวจัดการแพคเกจในระดับโซลูชันแสดงแพคเกจทั้งหมดที่อ้างอิงถึงโครงการจากโซลูชันและแพ็คเกจเพิ่มเติมทั้งหมดที่อยู่ในโฟลเดอร์แพ็คเกจ แต่ไม่ได้อ้างอิง สำหรับแพ็คเกจนี้ไม่มีความสามารถในการถอนการติดตั้งใน UI ฉันยอมรับว่าเป็นผลมาจากพฤติกรรมที่ไม่ถูกต้อง แต่ในกรณีนี้คุณควรตรวจสอบด้วยตนเอง และลบแพ็คเกจหรือติดตั้งใหม่เมื่อคุณจะแน่ใจว่าคุณต้องการมันหรือไม่
Pavel Bakshy

1
เพียงแค่ลบโฟลเดอร์และกลับไปที่ NuGet และดูแพ็คเกจมันจะยังคงแสดงตามที่ติดตั้งโดยมีเครื่องหมายถูกสีเขียวอยู่ด้านข้างให้ทำการถอนการติดตั้งที่เหมาะสมโดยใช้คอนโซล
k80sg

1
@ysrb คำสั่ง powershell ซึ่งใช้คำกริยาคำนามเช่น get-user หรือ remove-item ตัวอย่างของคุณคือคำนามคำกริยา
Nick Young

1
@ysrb Install-Packageขณะที่นิคยังกล่าวและนอกจากมันจะเป็นความน่ากลัวที่จะชมเชย
ProfK

159

ฉันพบวิธีแก้ปัญหาสำหรับสิ่งนี้

  1. เปิดใช้งานการเรียกคืนแพคเกจและการตรวจสอบอัตโนมัติ (ตัวเลือก / ตัวจัดการแพ็คเกจ / ทั่วไป)
  2. ลบเนื้อหาทั้งหมดของโฟลเดอร์แพ็คเกจ (ไปยัง Recycle Bin หากคุณกังวล!)
  3. จัดการแพคเกจ Nuget สำหรับโซลูชัน
  4. คลิกปุ่มคืนค่า

NuGet จะกู้คืนเฉพาะแพ็คเกจที่ใช้ในโซลูชันของคุณ คุณจะจบลงด้วยแพ็คเกจที่ดีและคล่องตัว


1
สิ่งนี้จะไม่ลบแพ็กเกจออกpackages.configและไม่ลบการอ้างอิงออกจากโครงการหรือไม่
CodeCaster

1
@CodeCaster ยากที่จะแยกวิเคราะห์เชิงลบของคุณ ไม่มีอะไรจะถูกลบออกจากการกำหนดค่าและการอ้างอิง ความคิดที่นี่คือการลบแพ็กเกจ NuGet ที่ไม่ได้อ้างอิงอีกต่อไป
James L

1
คำตอบที่ยอดเยี่ยม! หากคุณใช้ TFS คุณควรลบเนื้อหาทั้งหมดภายใน. / แพ็คเกจในแหล่งข้อมูล countrol explorer ก่อนเพื่อให้ลูกค้ารายอื่นเช่นเครื่องสร้างจะลบรายการที่ซ้ำซ้อนด้วย
Alexander Schmidt

4
@ sprinter252 หากคุณใช้การคืนค่าแพคเกจคุณไม่ควรตรวจสอบแพ็กเกจในการควบคุมซอร์สในตอนแรก นั่นเป็นหนึ่งในประโยชน์หลักของการใช้แพคเกจคืนค่า ในฐานะส่วนหนึ่งของการแปลงเป็นการกู้คืนแพคเกจควรวางกฎ 'ละเว้น' ไว้ในโฟลเดอร์แพ็คเกจ
Carl Bussema

@CarlBussema คุณพูดถูก เนื่องจากรุ่น NuGet ใหม่สิ่งนี้ไม่สำคัญนักเพราะ Nuget จะไม่เพิ่มไบนารีลงในโฟลเดอร์ย่อย ดังนั้นคุณจะได้รับโครงสร้างโฟลเดอร์เท่านั้น ความคิดเห็นของฉันเกี่ยวข้องกับพฤติกรรมเริ่มต้นของ TFS (รวมถึงแพ็คเกจ - โฟลเดอร์) ใน TFS ทุกที่ละเว้นจะถูกละเว้นบ่อย ;-) สำคัญสำหรับโครงการผสมกับ Xamarin
Alexander Schmidt

17

ก่อนเปิดคอนโซลตัวจัดการแพคเกจ จากนั้นเลือกโครงการของคุณจากรายการแบบเลื่อนลง และเรียกใช้คำสั่งต่อไปนี้เพื่อถอนการติดตั้งแพ็กเกจ nuget

Get-Package

สำหรับการรับแพ็คเกจทั้งหมดที่คุณติดตั้ง

แล้ว

Uninstall-Package PagedList.Mvc

--- เพื่อถอนการติดตั้งแพ็คเกจชื่อ PagedList.MVC

ข่าวสาร

PM> Uninstall-Package PagedList.Mvc
Successfully removed 'PagedList.Mvc 4.5.0.0' from MCEMRBPP.PIR.

คำตอบนี้ใช้ได้อย่างสมบูรณ์แบบสำหรับฉัน สถานการณ์ของฉันคือแพคเกจปรากฏขึ้นภายใต้แท็บอัปเดตของกล่องโต้ตอบ ... และเมื่อฉันกดอัปเดตไม่มีโปรเจ็กต์ติดตั้งแพ็กเกจ - ดังนั้นจึงไม่มีวิธีการอัปเดตหรือลบออก
azarc3

8

หากคุณต้องการลบ / ถอนการติดตั้งแพคเกจ Nuget ซึ่งใช้กับหลายโครงการในโซลูชันของคุณให้ไปที่:

  1. เครื่องมือ -> ผู้จัดการแพคเกจ Nuget -> จัดการแพคเกจ Nuget สำหรับโซลูชัน

  2. ในคอลัมน์ด้านซ้ายที่มี 'แพ็คเกจที่ติดตั้ง' เลือก 'ทั้งหมด' ดังนั้นคุณจะเห็นรายการของแพ็คเกจที่ติดตั้งและปุ่มจัดการข้าม

  3. เลือกปุ่มจัดการแล้วคุณจะได้รับป๊อปอัพยกเลิกการเลือกช่องทำเครื่องหมายในชื่อโครงการและตกลง

ส่วนที่เหลือของตัวจัดการแพคเกจงานจะทำเพื่อคุณ


1
นี่เป็นคำตอบที่ฉันต้องการอย่างแน่นอนขอบคุณ!
Sal

3

หากคุณลบแพ็กเกจโดยใช้ยูทิลิตี้ถอนการติดตั้งแพ็กเกจและลบแพ็คเกจที่ต้องการออกจากไดเรกทอรีแพ็คเกจภายใต้โซลูชัน (และคุณยังคงได้รับข้อผิดพลาด) เพียงเปิดไฟล์ * .csproj ในโปรแกรมแก้ไขรหัสและลบแท็กออกด้วยตนเอง เช่นฉันต้องการกำจัดแพคเกจNuget Xamarin.Forms.Aliasและฉันลบบรรทัดเหล่านี้ออกจากไฟล์ * .csproj

การลบแพ็คเกจ nuget ออกจากสคริปต์ msbuild

และสุดท้ายอย่าลืมโหลดโครงการของคุณอีกครั้งเมื่อได้รับแจ้งใน Visual Studio (หลังจากเปลี่ยนไฟล์โครงการ) ฉันลองใช้ Visual Studio 2015 แต่ควรใช้งานได้กับ Visual Studio 2010 ขึ้นไปเช่นกัน

หวังว่านี่จะช่วยได้


2

อีกทางเลือกหนึ่งคือติดตั้งแพ็กเกจที่ไม่ได้ใช้ที่คุณต้องการลบในโครงการใด ๆ ของโซลูชันของคุณหลังจากนั้นให้ถอนการติดตั้งและ Nuget จะลบมันเช่นกัน

ต้องการโปรแกรมถอนการติดตั้งที่เหมาะสมที่นี่


มีวิธีการถอนการติดตั้งอย่างถูกต้องโดยไม่ต้องติดตั้งใหม่หรือไม่
Knox

2

โซลูชันที่ 1

ใช้ท่อส่ง PowerShell เพื่อรับแพ็คเกจและลบในคำสั่งเดียวเช่นนี้

Get-Package | Uninstall-Package

โซลูชันที่ 2

หากคุณต้องการถอนการติดตั้งแพคเกจที่เลือกทำตามขั้นตอนเหล่านี้

  1. ใช้GetPackagesเพื่อรับรายการแพ็คเกจ
  2. ดาวน์โหลดซอฟต์แวร์ข้อความว่องไว
  3. คัดลอกผลลัพธ์ของGetPackagesใน NimbleText (สำหรับแต่ละแถวในหน้าต่างรายการ)
  4. ตั้งค่าตัวคั่นคอลัมน์เป็น(หากจำเป็น
  5. ประเภทUninstall-Package $0(ทดแทนโดยใช้หน้าต่างรูปแบบ)
  6. คัดลอกผลลัพธ์และวางในPackage Manage Console

นั่นคือคนทั้งหมด


1

หนึ่งแพ็คเกจ NuGet สามารถอ้างอิงแพ็คเกจ NuGet อื่นได้ ดังนั้นโปรดระมัดระวังเกี่ยวกับการพึ่งพาระหว่างแพ็กเกจ ฉันเพิ่งถอนการติดตั้งแพคเกจแผนที่ของ Google และต่อมาก็ถอนการติดตั้งแพคเกจพื้นฐานเช่น Newtonsoft, Entity Framework ฯลฯ

ดังนั้นการลบแพ็คเกจจากโฟลเดอร์แพ็คเกจด้วยตนเองจะปลอดภัยกว่า


1

จากหน้าต่างคอนโซล Package Manager บ่อยครั้งที่คำสั่งใดก็ตามที่คุณใช้ติดตั้งแพคเกจสามารถใช้ถอนการติดตั้งแพคเกจนั้นได้ เพียงแค่เปลี่ยนติดตั้งคำสั่งด้วยการถอนการติดตั้ง

ตัวอย่างเช่นในการติดตั้ง PowerTCPTelnet คำสั่งคือ:

Install-Package PowerTCPTelnet -Version 4.4.9

หากต้องการถอนการติดตั้งเดียวกันคำสั่งคือ:

Uninstall-Package PowerTCPTelnet -Version 4.4.9



-2

วิธีอื่น ๆ และที่สำคัญที่สุดสำหรับฉันคือ:

  1. ไปที่ Soution ของคุณแล้วคลิกขวาที่นี่

  2. เลือกตัวเลือก "จัดการแพคเกจ NUgets สำหรับการแก้ปัญหา" เปิดหน้าต่างป็อปอัพโดยคลิกที่ปุ่ม "การตั้งค่า" จะเป็นการเปิดหน้าต่างป็อปอัพอื่นแล้วค้นหา: "Package Manager"

  3. ภายในตัวเลือก "ตัวจัดการแพคเกจ" คุณมีสองตัวเลือกเพิ่มเติม (I. ทั่วไป II. แหล่งที่มาของแพคเกจ) ในแต่ละตัวเลือกให้ยกเลิกการทำเครื่องหมายในช่องทำเครื่องหมายทั้งหมด

ขั้นตอนนี้จะปิดใช้งาน NuGet จากโครงการของคุณ

ฉันหวังว่าจริงๆช่วยคุณ


-2

หากคุณต้องการใช้ตัวเลือก Visual Studio โปรดดูลิงค์ด้านล่าง

http://spvenky.wordpress.com/2014/08/10/how-to-remove-nuget-packages-from-existing-visual-studio-solution/

ขั้นตอนที่ 1: ใน Visual Studio ไปที่เครื่องมือ / ตัวจัดการแพ็คเกจ NuGet / จัดการแพคเกจ NuGet สำหรับโซลูชัน ...

ขั้นตอนที่ 2: ยกเลิกการเลือกโครงการของคุณจากโซลูชันปัจจุบัน

ขั้นตอนที่ 3: ยกเลิกการเลือกโครงการและกดตกลง


2
ควรเขียนคำตอบใน StackOverflow แทนการโพสต์ลิงก์ลงไปเพราะลิงก์จะหมดอายุในอนาคต
Amadeus Sánchez
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.