คุณจะหาแพ็คเกจ NuGet ที่ไม่ได้ใช้ในโซลูชันได้อย่างไร


148

คุณจะหาแพ็คเกจ NuGet ที่ไม่ได้ใช้ในโซลูชันได้อย่างไร

ฉันมีโซลูชันจำนวนมากที่มีจำนวนมากในแพ็คเกจที่ติดตั้งไว้และจำนวนมากถูกตั้งค่าสถานะว่ามีการอัปเดต

อย่างไรก็ตามฉันกังวลว่าอาจมีการเปลี่ยนแปลงดังนั้นก่อนอื่นฉันต้องล้างข้อมูลด้วยการลบแพ็คเกจที่ไม่ได้ใช้


2
คุณตระหนักดีว่าการแตกหักการเปลี่ยนแปลงในแพ็คเกจที่คุณไม่ได้ใช้จะไม่ส่งผลกระทบต่อคุณ ... สำหรับคำถามนี้ฉันเพิ่งลบแพ็คเกจ NuGet ทั้งหมดและเพิ่มสิ่งที่คอมไพเลอร์บอกฉันใหม่
Ohad Schneider

5
@OhadSchneider Nope ... แต่โรคในตัวผมไม่ได้ต้องการให้ทุก cruft ของแพคเกจที่ไม่ได้ใช้เช่นในการใช้งาน
SteveC

คำตอบ:


57

ReSharper 2016.1 มีคุณสมบัติในการลบ NuGet ที่ไม่ได้ใช้

สามารถรันบนโซลูชันและในแต่ละโครงการในโซลูชันและทำสิ่งต่อไปนี้:

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

น่าเสียดายที่นี่ใช้ไม่ได้กับproject.jsonโครงการ ( RSRP-454515 ) และโครงการ ASP.NET หลัก ( RSRP-459076 )


2
ฉันมี 2016.1 และ R # ไม่ได้ลบการอ้างอิง nuget ที่ไม่ได้ใช้ .. ฉันกำลังใช้ project.json กับ nuget3 - เป็นปัญหาที่ทราบหรือไม่
Peter McEvoy

2
@PeterMcEvoy ใช่ปัญหานี้เป็นที่รู้จักแล้ว ขอบคุณสำหรับการชี้ให้เห็น ฉันได้ปรับปรุงคำตอบเพื่อชี้แจงว่า
ulex

4
ฉันต้องตาบอด แต่ฉันไม่เห็นวิธีใด ๆ ในการใช้งานเครื่องมือนี้จริง ๆ
claudekennilol

14
@claudekennilol เพิ่งคิดออก คลิกขวาที่โครงการและมีตัวเลือกสำหรับ "เพิ่มประสิทธิภาพการอ้างอิง ... "
Matt Sanders

1
@ เศษส่วนที่ถูกต้อง มันแพงมาก (เกินไป) สำหรับผู้ใช้ส่วนตัว แต่ถ้าคุณอยู่ในที่ทำงานประเภทใด ๆ Resharper ก็คุ้มค่าสำหรับงานที่เร็วกว่าและเวิร์กโฟลว์ที่สะอาดกว่าที่คุณได้รับเมื่อเทียบกับ VS ที่เป็นค่าเริ่มต้น
ยกเว้น

21

คุณสามารถใช้ Visual Studio Extension ResolveUR - แก้ไขการอ้างอิงที่ไม่ได้ใช้

แก้ไขการอ้างอิงที่ไม่ได้ใช้รวมถึงการอ้างอิง nuget ในโครงการ Visual Studio 2012/2013 ผ่านรายการเมนูที่โซลูชันและโหนดโครงการหน้าต่างเครื่องมือ Explorer โซลูชัน

ไม่ใช่เรื่องง่ายดังนั้นฉันแนะนำให้ทำการสำรองข้อมูลและ / หรือคอมมิทก่อนเพื่อย้อนกลับหากมีสิ่งผิดปกติ


โปรแกรมนี้กระตือรือร้นที่จะลบไลบรารี ... ระวังเมื่อใช้เว็บไซต์คุณจะสังเกตเห็นว่า DLLs จำนวนมากจำเป็น แต่หายไป หากแพ็คเกจ NuGet ต้องการแพ็คเกจอื่นคุณไม่ควรลบแพ็คเกจนั้นแม้ว่าคุณจะไม่ได้พึ่งพามัน
jsgoupil

ฉันใช้เครื่องมือนี้กับผลลัพธ์ที่ไม่ดี มันถูกลบออก (หรือแนะนำให้ลบอย่างน้อย) หลายสิ่งหลายอย่างที่ใช้งานจริง มีอยู่สองสามครั้งที่ฉันเชื่อถือคำแนะนำและต้องใช้เวลาอันมีค่าในการพยายามกู้คืนสิ่งที่ลบออกไป
Ryan VandenHeuvel

2
[หมายเหตุ] คำอธิบายที่ชัดเจน:The tool is not tested to work with DotNet Web projects(Asp.Net, MVC), Windows CE, Silverlight project types. Use it at your own risk.
Korayem

เครื่องมือนี้ดีจริงๆ! มันฉลาดพอที่จะไม่ลบ NUnit.ConsoleRunner ฯลฯ แม้ว่าคุณจะไม่มีการอ้างอิงโดยตรงในโค้ดของคุณ
OlegI

เครื่องมือนี้ช้า ฉันมีทางออกด้วยกว่า 250 โครงการฉันรอ .. และรอ .. ถอนหายใจ
Piotr Kula

11

คุณสามารถทำได้โดยใช้ Resharper 2019.1.1

คลิกขวาที่โครงการ> Refactor> ลบการอ้างอิงที่ไม่ได้ใช้

หากโครงการของคุณมีขนาดเล็กคุณสามารถฉาย> ปรับการอ้างอิงที่ใช้ . .

หน้าต่างจะปรากฏขึ้น เลือกการอ้างอิงทั้งหมดและลบออกทั้งหมด จากนั้นย้อนกลับและเพิ่มสิ่งที่ทำให้คุณมีข้อผิดพลาดของคอมไพเลอร์


3
ใน VS.Net 2019 กับ Resharper ฉันพบตัวเลือกนี้ภายใต้: Explorer โซลูชัน> การอ้างอิง > เพิ่มประสิทธิภาพการอ้างอิง ...
R. Schreurs

"หน้าต่างเครื่องมือเพิ่มประสิทธิภาพการอ้างอิงแสดงการอ้างอิงแอสเซมบลีที่ไม่ได้ใช้และใช้ในโครงการปัจจุบันและแสดงการใช้การอ้างอิงที่แน่นอน" blog.jetbrains.com/dotnet/2012/01/03/…
Nick Gallimore

1

นี่คือการใช้แรงงาน แต่มันใช้งานได้

  1. ใช้ ReSharper หรือเครื่องมือวิเคราะห์รหัสที่คล้ายกันเพื่อระบุการอ้างอิงที่ไม่ได้ใช้ในโครงการของคุณและถอนการติดตั้ง nuget ในโครงการที่เกี่ยวข้อง

  2. บางครั้งนักเก็ตที่ถอนการติดตั้งยังคงอยู่ในรายการแพคเกจที่ติดตั้งและอัปเดตในกล่องโต้ตอบจัดการแพ็คเกจ NuGet ปิด Visual Studio จากนั้นลบpackagesโฟลเดอร์จากนั้นเปิดโซลูชันอีกครั้งและกู้คืนนักเก็ตของคุณ


0

ฉันไม่คิดว่าจะมีวิธีการเริ่มต้นในการค้นหาสิ่งนี้ เหตุผลหลักคือความหลากหลายของสิ่งที่แพ็คเกจเหล่านี้สามารถทำได้จากการอ้างอิงแอสเซมบลีจนถึงการฉีดซอร์สโค้ดไปยังโครงการของคุณ คุณอาจต้องการตรวจสอบNugetส่วนขยายแม้ว่า หัวข้อต่อไปนี้เกี่ยวกับ codeplex พูดถึงรายงานการตรวจสอบของแพ็คเกจ nuget

http://nuget.codeplex.com/discussions/429694

(NuGet ถูกย้ายจาก Codeplex เป็น GitHub แล้วลิงก์ถาวรด้านบน :) https://web.archive.org/web/20171212202557/http://nuget.codeplex.com:80/discussions/429694

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