Kullanılmayan NuGet paketlerini bir çözümde nasıl bulabilirsiniz?


148

Kullanılmayan NuGet paketlerini bir çözümde nasıl bulabilirsiniz?

Yüklü paketlerde çok fazla sayıda çözüm var ve çok sayıda güncelleme var olarak işaretlendi.

Ancak değişikliklerin kırılabileceğinden endişe ediyorum, bu yüzden önce kullanılmayan paketleri kaldırarak temizlemek istiyorum.


2
Kullanmadığınız paketlerdeki değişikliklerin sizi zaten etkilemeyeceğini biliyorsunuz ... Soruya gelince, tüm NuGet paketlerini kaldırıyorum ve derleyicinin bana söylediklerini tekrar ekliyorum.
Ohad Schneider

5
@OhadSchneider Hayır ... ama içimdeki OKB, kullanılmayan paketlerin tüm hızını istemiyor, örneğin dağıtımda
SteveC

Yanıtlar:


57

ReSharper 2016.1 kullanılmayan NuGet'i kaldırma özelliğine sahiptir .

Bir çözüm üzerinde ve her projede bir çözüm üzerinde çalıştırılabilir ve şunları yapar:

  1. Kodunuzu analiz edin ve montajlara referans toplayın.
  2. Montajların kullanımlarına göre NuGet kullanım grafiği oluşturun.
  3. İçerik dosyaları olmayan, kullanılmayan ve kullanılan bağımlılıklar olmayan paketlerin kullanılmamış olduğu varsayılır ve kaldırılması önerilir.

Ne yazık ki, bu project.jsonprojeler ( RSRP-454515 ) ve ASP.NET çekirdek projeleri ( RSRP-459076 ) için çalışmaz


2
Ben 2016.1 ve R # kullanılmayan nuget referansları kaldırmıyor .. nuget3 ile project.json kullanıyorum - bu bilinen bir sorun mu?
Peter McEvoy

2
@PeterMcEvoy Evet, bu bilinen bir sorundur. İşaret ettiğiniz için teşekkürler. Bunu açıklığa kavuşturmak için cevabı güncelledim.
ulex

4
Kör olmalıyım ama aslında bu aracı çalıştırmak için herhangi bir yol göremiyorum
claudekennilol

14
@claudekennilol anladı. projeye sağ tıklayın ve "Referansları Optimize Edin ..." için bir seçenek var
Matt Sanders

1
@Fraktal Doğru. Özel kullanıcılar için çok (çok) pahalıdır, ancak herhangi bir işyerinde iseniz, Resharper, varsayılan VS'ye kıyasla aldığınız çok daha hızlı ve daha temiz iş akışı için buna değer.
Hariç

21

Visual Studio Extension ResolveUR - Kullanılmayan Referansları Çöz

Visual Studio 2012/2013 projelerinde nuget referanslarını içeren kullanılmayan referansları, çözüm ve proje düğümlerindeki menü öğesi aracılığıyla Çözüm Gezgini Araç Penceresi aracılığıyla çözümleyin.

Onun kolay bir görev değil bu yüzden bir yedekleme yapmak ve / veya sadece bir şey yanlış gittiğinde geri almak için önce taahhüt öneririz.


Bu program, kütüphaneleri silmek söz konusu olduğunda çok heveslidir ... Dikkatli olun, bir web sitesi kullanırken, çok sayıda DLL'nin gerekli olduğunu, ancak gittiğini fark edeceksiniz. Bir NuGet paketi başka bir paket gerektiriyorsa, SİZ'e bağımlılığınız zor olmasa bile bunu silmemelisiniz.
jsgoupil

Bu aracı kötü sonuçlarla kullandım. Aslında kullanımda olan birçok şeyi kaldırır (veya en azından kaldırmanız önerilir). Birkaç kez önerilere güvendim ve kaldırılanı kurtarmaya çalışmak için değerli zaman harcamak zorunda kaldım.
Ryan VandenHeuvel

2
[NOT] açıklama açıkça belirtmektedir: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

Bu araç gerçekten çok güzel! Kodunuzda doğrudan referansınız olmasa bile NUnit.ConsoleRunner vb. Kaldırmak için yeterince akıllı
OlegI

Bu araç yavaş. 250'den fazla projeyle çözümüm var .. Bekledim .. ve bekledim .. iç çekiş
Piotr Kula

11

Bunu Resharper 2019.1.1'i kullanarak yapabilirsiniz.

Projeye sağ tıklayın> Refactor> Kullanılmayan Referansları Kaldır.

Projeniz küçükse,> Kullanılan Referansları Optimize Et seçeneğini de belirleyebilirsiniz. . .

Bir pencere açılacaktır. Tüm referansları seçin ve hepsini kaldırın. Sonra geri dönün ve derleyici hatası verenleri tekrar ekleyin.


3
Resharper ile VS.Net 2019'da, bu seçeneği altında buldum: Solution Explorer> Referanslar > Referansları optimize et ...
R. Schreurs

"Referansları En İyi Duruma Getir aracı penceresi, mevcut projede kullanılmayan ve kullanılmayan montaj referanslarını görüntüler ve referansların tam olarak nasıl kullanıldığını gösterir." blog.jetbrains.com/dotnet/2012/01/03/…
Nick Gallimore

1

Bu el emeği, ama işe yarıyor.

  1. Projelerinizde kullanılmayan referansları tanımlamak için ReSharper veya benzeri bir kod analiz aracını kullanın ve ilgili projelerde nugeti kaldırın.

  2. Bazen kaldırılan nugetler, NuGet Paketlerini Yönet iletişim kutusundaki Yüklü paketler ve Güncellemeler listelerinde kalmaya devam eder . Visual Studio'yu kapatın packages, sonra klasörü silin , sonra çözümü yeniden açın ve nugets geri yükleyin.


0

Bunu bulmanın varsayılan bir yolu olduğunu sanmıyorum. Birincil neden, bu paketlerin bir montajdan referans almasından projenize kaynak kodu enjekte etmesine kadar yapabileceği çeşitli şeylerdir. Yine de Nuget.Extensions'ı kontrol etmek isteyebilirsiniz . Aşağıdaki codeplex iş parçacığı, nuget paketlerinin denetim raporundan bahsediyor.

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

(NuGet, Codeplex'ten GitHub'a taşındı. Yukarıdaki bağlantı arşivi :) https://web.archive.org/web/20171212202557/http://nuget.codeplex.com:80/discussions/429694

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.