Bagaimana Anda dapat menemukan paket NuGet yang tidak digunakan dalam suatu solusi?

148

Bagaimana Anda dapat menemukan paket NuGet yang tidak digunakan dalam suatu solusi?

Saya punya sejumlah solusi di mana ada banyak paket yang diinstal, dan sejumlah besar ditandai memiliki pembaruan.

Namun saya khawatir mungkin ada perubahan yang melanggar, jadi saya pertama-tama ingin membersihkan dengan menghapus semua paket yang tidak digunakan.

SteveC
sumber
2
Anda menyadari bahwa memecah perubahan pada paket yang tidak Anda gunakan tidak akan memengaruhi Anda ... Adapun pertanyaannya, saya hanya menghapus semua paket NuGet dan menambahkan kembali apa yang dikatakan kompiler kepada saya.
Ohad Schneider
5
@OhadSchneider Tidak ... tetapi OCD di dalam saya tidak ingin semua cacat dari paket yang tidak digunakan, misalnya dalam penyebaran
SteveC

Jawaban:

57

ReSharper 2016.1 memiliki fitur untuk menghapus NuGet yang tidak digunakan.

Itu dapat dijalankan pada solusi dan pada setiap proyek dalam solusi dan ia melakukan hal-hal berikut:

  1. Analisis kode Anda dan kumpulkan referensi ke majelis.
  2. Buat grafik penggunaan NuGet berdasarkan penggunaan majelis.
  3. Paket tanpa file konten, yang tidak digunakan itu sendiri dan tanpa dependensi yang digunakan dianggap tidak digunakan dan disarankan untuk dihapus.

Sayangnya, ini tidak berfungsi untuk project.jsonproyek ( RSRP-454515 ) dan proyek inti ASP.NET ( RSRP-459076 )

ulex
sumber
2
Saya punya 2016.1 dan R # tidak menghapus referensi nuget yang tidak digunakan .. Saya menggunakan project.json dengan nuget3 - apakah itu masalah yang diketahui?
Peter McEvoy
2
@PeterMcEvoy Ya, ini masalah yang diketahui. Terima kasih telah menunjukkan. Saya telah memperbarui jawaban untuk menjelaskannya.
ulex
4
Saya pasti buta tetapi saya tidak melihat cara untuk benar-benar menjalankan alat ini
claudekennilol
14
@claudekennilol baru saja menemukan jawabannya. klik kanan proyek dan ada opsi untuk "Optimalkan Referensi ..."
Matt Sanders
1
@Fractal Benar. Ini sangat (terlalu) mahal untuk pengguna pribadi, tetapi jika Anda berada di semua jenis tempat kerja, maka Resharper sangat berharga untuk alur kerja yang jauh lebih cepat dan lebih bersih yang Anda dapatkan, dibandingkan dengan VS standar.
Excludos
21

Anda dapat menggunakan Visual Studio Extension ResolveUR - Putuskan Referensi yang Tidak Digunakan

Menyelesaikan referensi yang tidak digunakan termasuk referensi nuget di Visual Studio 2012/2013 proyek melalui item menu di solusi dan node proyek Solution Explorer Tool Window.

Ini bukan tugas yang mudah jadi saya sarankan untuk membuat cadangan dan / atau melakukan sebelum hanya untuk mengembalikan jika terjadi kesalahan.

dknaack
sumber
Program ini terlalu bersemangat untuk menghapus pustaka ... Hati-hati, saat menggunakan situs web, Anda akan melihat bahwa banyak DLL diperlukan tetapi telah hilang. Jika paket NuGet memerlukan yang lain, Anda tidak boleh menghapusnya meskipun ANDA tidak memiliki ketergantungan yang keras padanya.
jsgoupil
Saya telah menggunakan alat ini dengan hasil yang buruk. Itu dihapus (atau setidaknya disarankan untuk menghapus) banyak hal yang sebenarnya digunakan. Ada beberapa kali saya memercayai saran dan harus menghabiskan waktu berharga untuk memulihkan apa yang dihapus.
Ryan VandenHeuvel
2
[CATATAN] Uraian tersebut dengan jelas menyatakan: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
Alat ini sangat bagus! Itu cukup pintar untuk tidak menghapus NUnit.ConsoleRunner dll walaupun Anda tidak memiliki referensi langsung ke dalamnya dalam kode Anda
OlegI
Alat ini lambat. Saya punya solusi dengan lebih dari 250 proyek .. Saya menunggu .. dan menunggu .. desah
Piotr Kula
11

Anda dapat melakukannya dengan menggunakan Resharper 2019.1.1.

Klik kanan pada proyek> Refactor> Hapus Referensi yang Tidak Digunakan.

Jika proyek Anda kecil, Anda juga dapat memproyeksikan> Optimalkan Referensi yang Digunakan. . .

Sebuah jendela akan muncul. Pilih semua referensi dan hapus semuanya. Kemudian kembali dan tambahkan kembali yang memberi Anda kesalahan kompiler.

Nick Gallimore
sumber
3
Dalam VS.Net 2019 dengan Resharper, saya menemukan opsi ini di bawah: Solution Explorer> Referensi > Optimalkan referensi ...
R. Schreurs
"Jendela alat Referensi Optimize menampilkan referensi perakitan yang keduanya tidak digunakan dan digunakan dalam proyek saat ini, dan menunjukkan bagaimana tepatnya referensi digunakan." blog.jetbrains.com/dotnet/2012/01/03/...
Nick Gallimore
1

Ini adalah pekerjaan manual, tetapi berhasil.

  1. Gunakan ReSharper atau alat analisis kode serupa untuk mengidentifikasi referensi yang tidak digunakan dalam proyek Anda dan menghapus instalan nuget dalam proyek yang sesuai.

  2. Terkadang nuget yang telah dihapus instalasinya masih ada di paket Terpasang dan daftar Pembaruan dalam dialog Kelola Paket NuGet. Tutup Visual Studio kemudian hapus packagesfolder, kemudian buka kembali solusi dan kembalikan nugets Anda.

angularsen
sumber
0

Saya tidak berpikir ada cara standar untuk mengetahui hal ini. Alasan utama menjadi beragam hal yang dapat dilakukan paket-paket ini mulai dari mereferensikan sebuah majelis ke menyuntikkan kode sumber ke proyek Anda. Anda mungkin ingin memeriksa Nuget . Ekstensi meskipun. Utas berikut tentang pembicaraan codeplex tentang laporan audit paket nuget.

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

(NuGet telah dipindahkan dari Codeplex ke GitHub. Arsip tautan di atas :) https://web.archive.org/web/20171212202557/http://nuget.codeplex.com:80/discussions/429694

Nikhil Gupta
sumber