Visual Studio projelerinde bir projeden kullanılmayan tüm başvuruları kaldırma


263

Sadece hiç kullanılmamış bir projeden tüm referansları otomatik olarak kaldırmak için çeşitli Visual Studio sürümleri içinde mümkün mü merak ettim?

Cevabınızda, lütfen çözümün hangi VS sürümüne uygulanacağını belirtin.


4
Genel olarak merak ediyorum, bu DLL'lerin kaldırılması derleme süresinde gözle görülür bir iyileşme veya başka bir şey ile sonuçlanıyor mu? (Tabii ki, gereksiz bağımlılıkları kaldırmak dışında)
monish001

3
VS2015 için benzer bir ücretsiz uzantısı var mı?
George Birbilis

1
VB.Net projesi VS 2005'ten beri var, ancak C # projeleri için asla uygulanmadı msdn.microsoft.com/en-us/library/7sfxafba
Slai

4
Sen edebilirsiniz Oy (olması gerektiği gibi) bu özelliği VS parçası olarak dahil olması.
Mike Lowery

2
@ monish001 - her montaj ve varlık dağıtım ayak izini arttırır ve hataları yönetmek / sürdürmek veya potansiyel bir kaynak olmak için başka bir şeydir.
StingyJack

Yanıtlar:


55

Yeniden Paylaşım (eklenti) yüklüyse, kullanılmış referansları Solution Explorer> (sağ tıklama) Referanslar> Referansları Optimize Et ... ile analiz etmenizi sağlayan bir özelliğe erişebilirsiniz .

http://www.jetbrains.com/resharper/webhelp/Refactorings__Remove_Unused_References.html

Bu özellik doğru işlemiyor:

  • Bağımlılık enjekte edilen montajlar
  • Dinamik olarak yüklenmiş montajlar (Assembly.LoadFile)
  • Birlikte çalışma yoluyla yüklenen yerel kod derlemeleri
  • ActiveX denetimleri (COM birlikte çalışma)
  • Montajları yüklemenin diğer yaratıcı yolları

resim açıklamasını buraya girin


1
Son ifadeniz "Mükemmel değil, ancak geçerli projenizde başvurulan derlemelere bağımlı olan derlemeler hala kullanılmamış olarak işaretleniyor." aslında bir sorun değil. Yapı referanslarınızın referanslarını kopyalamayı bilir. Bu yanıta bakın: stackoverflow.com/a/2290139/26262
Ed Greaves

Bu bunu yapmak için uygun bir yol olsa da "çeşitli Visual Studio sürümlerinde" başka bir şey değil, zaten içinde "anlamına gelir"
Mark Schultheiss

28

Resharper uzatma sizin için yapacaktır.

Bu uzantı Visual Studio 2005'ten 2017'ye kadar destekler.

Derleyici kullanılmayan derlemeleri içermese de, araçların dikkate alması gereken daha fazla kod olduğundan Visual Studio ve Intellisense'i kullanarak gereksiz ifadeler ve başvurular yavaşlar.


12
biri projede kullanılmayan referanslar bir sürü bulduk - ama bir sürü gerçekten kullanımda nerede ... Bu yüzden referanslar ile Resharper güvenmiyorum
Offler

5
Resharper, büyük projelerde tonlarca bellek tüketir ve sonunda
Cemre

2
@eraj VS Express sürümleri, uzantıları desteklemez, ReSharper gibi uzantıları destekleyen ücretsiz Topluluk sürümünü alır.
codemonkeh

4
Pete, herhangi bir otomatik aletin fazla eriţme olasýlýđý olacak. Özellikle DI ve PCL bağımlılık çağında kullanılmamış gibi görünen bağımlılıklara ihtiyaç duyulabilir, ancak bu kesinlikle bir alet hatası değildir. Ekran görüntüsü almak yerine sürüm kontrol yazılımı kullanıyor olmalısınız. Git veya Hg gibi modern bir sistem yerel olarak sık sık check-in yapmanızı sağlar, böylece işinizi kaybetmezsiniz.
Mathieson

2
söyleyebildiğim kadarıyla Resharper kullanılmayan ad alanlarını gösterir, montaj referansları değil, bence "bir projeden kullanılmayan referanslar" sorusunun anlamı. Ben de ikincisini bulmak istiyorum
Sonic Soul

28

Lardite grubuna göre ücretsiz VS2010 uzantısını deneyebilirsiniz: Reference Assistant . Benim için mükemmel çalışıyor. Bu araç, kullanılmayan referansları bulmanıza yardımcı olur ve hangi referansların kaldırılacağını seçmenizi sağlar.


3
MVC projesi ile çalışmıyor. Temel DLL .Helpers ve .WebPage
Kullanıcı



5
ve VS2019 için?
DARKGuy

21

Bir Visual Basic projesinde "Kullanılmayan Referanslar" (Proje -> Referanslar -> Kullanılmayan Referanslar) kaldırma desteği vardır. C # 'da böyle bir işlev yoktur.

Bir C # projesinde (diğer araçlar olmadan) yapmanın tek yolu olası kullanılmayan montajları kaldırmak, projeyi derlemek ve derleme sırasında herhangi bir hata olup olmadığını doğrulamaktır. Hiçbir hata oluşmazsa, kullanılmayan bir montajı çıkardınız. ( Yazıma bakın )

Hangi projenin (montaj) diğer montajlara bağlı olduğunu bilmek istiyorsanız NDepend'i kullanabilirsiniz .


2
VS 2008/2010'da, kullanıcıları kaldırmak veya kaldırmak ve sıralamak için bir sağ tıklama menüsü seçeneği vardır.
JohnB

11
@JohnB: Elbette haklısın, ama onun sorusu (ad alanlarının) kullanımları değil referanslar (meclislere) ile ilgili.
Jehof

VS2012: menü: Proje-> özellikler-> Referanslar-> Kullanılmayan referanslar.
LosManos

20

Visual Studio 2013/2015/2017 için tam olarak ne istediğinizi yapan bir uzantı var: ResolveUR . Bunun temel olarak yaptığı şey:

  • referans projede kaldırıldı
  • proje msbuild ile derlenmiştir
  • derleme hatalarını kontrol et
  • derleme hataları varsa kaldırılan başvuruları geri yükleyin.

VS 2017 Community Edt için yükledim. - şimdiye kadar iyi çalışıyor.
Thomas

derleme hatası vardır ama ben inşa zaman hiçbir inşa hatası olduğunu söylüyor bu yüzden vs2015 comm edtion çalışmıyor
Raghavendra


5
2.5 / 5 yıldız Visual Studio Marketplace'den 5 yorum üzerinden beni biraz
ECH

Bir MVC Projesinde denedim ve System.Web.Helpers gibi birçok hayati bağımlılığı kaldırmayı önerdi, bu yüzden kendi başına gitmesine izin vermiyorum.
Jahaziel

19

Tek ihtiyacınız olan taş ve çıplak eklem, o zaman bir mağara adamı gibi yapabilirsiniz.

  1. Kullanılmayan ad alanlarını kaldırın (her sınıf için)
  2. Hata Ayıklama derlemesini çalıştır
  3. Yürütülebilir ve kalan ad alanı referanslarınızı yeni bir konuma kopyalayın
  4. Yürütülebilir dosyayı çalıştırın
  5. Referans DLL hatası eksik
  6. Gerekli DLL'i Hata Ayıklama klasöründen kopyalayın
  7. Tekrarla 4-6
  8. Gu Gu Ga Ga?
  9. Taşını at

Hangi referansın hala gerekli olduğunu size bildirmek için oluşturma araçlarınıza da güvenebilirsiniz. VS 2017 dönemi, mağara adamı hala hayatta kaldı.


Haha, küçük bir mizahla ilgili yanlış bir şey yok. Gerçekten de Stoneman yaklaşımı, spendy Enterprise sürümü olmadan şu anda sahip olduğumuz gibi görünüyor.
Nicholas Petersen

16

Buraya gelen herkes Visual Studio 2012'yi arıyor :

Visual Studio 11 için Reference Assistant'ı İndirin ve Yükleyin

Daha sonra şunları yapabilirsiniz:

resim açıklamasını buraya girin


1
Visual Studio 11 için Reference Assistant yanlış gibi görünüyor, bana aslında kullanıldığını bildiğim (Nuget aracılığıyla yüklendi) bir sürü kullanılmayan referans gösterdi.
Bill Yang

1
MVC projesi ile çalışmıyor. Temel DLL .Helpers ve .WebPage
User.Anonymous

Evet, bu WPF C # programını kullanarak kıçtan beni ısırmaya geldi.
Charles Clayton

VS2017'de bir seçenek değil
Nathan

1
VS2019'da da yok
Vin Shahrdar

15

Visual Studio sürüm 2017 ve 2015 ile bunu Kod Eşleme özelliğiyle yapabilirsiniz, ancak bu özellik Topluluk veya Profesyonel sürümlerinde değil , yalnızca Enterprise Edition'da kullanılabilir .

Çözüm gezgininde proje düğümüne sağ tıklayın ve 'Kod Eşleminde Göster'i seçin. Bu, .dll dosyasını boş bir grafikte tek bir düğüm olarak görüntüler. Kod Eşleminde o düğüme sağ tıklayın ve "Bu Referansları Montajları Göster" i seçin. Bu, yalnızca gerçekte başvurulan derlemeleri göstermek üzere genişletilebilen "Haricilar" adlı ek bir düğüm ekleyecektir.

resim açıklamasını buraya girin


1
Enterprise sürümünüz varsa ve bağlam menüsünde bu seçeneği görmüyorsanız, Ayrı Bileşenler panelinin altındaki VS yükleyicisinden "Kod Haritası" özelliğini yüklemeniz gerekir.
StingyJack

Bu iyi bir şey, teşekkür ederim @ Glenn. Sadece Micosoft.Office.Interop.Excel kullanımda olduğunu ve diğer referanslar arasında listelenmediğini söylemek istiyorum, bu yüzden hala biraz dikkatli olmak zorunda.
Emil Filip

14

Visual Studio 2013'te bu uzantı çalışır: ResolveUR


15
@abarisone Genel "bir bağlantıyı yanıt olarak kullanmayın" yanıtı gerçekten yalnızca yanıtta BAKILDIĞINIZDA kullanılmalıdır. Bağlantı, bu yanıtla ilgili olan tek şeydir. Bu bir VS eklentisine bir bağlantıdır, bu yüzden dahil edilecek başka bir şey yoktur.
Charles Boyung

Charles ile hemfikirim. Bu @abarisone tarafından yapılan ılımlılık gibi görünüyor. Bu cevap gerçekten biraz zaman kazanmama yardımcı oldu ve herhangi bir modun silmek için güçlerini kötüye kullansaydı bundan nefret ederdim.
Zun

@Zun Öncelikle hiç moderatör olmadım ya da iddia ettim. Amacım uzantı hakkında daha fazla bilgi istemekti. Yanımda yüzeysel olabilir, ama kesinlikle bir istismar etmek istemedim.
abarisone

12

Bazı insanlar harika bir araç önerdi - Visual Studio için Reference Assistant . Sorun VS2012 en son desteklenen Visual Studio olmasıdır. Ancak VS2013'te de çalışmanın yolu var;)

Ve işte nasıl:

1) Lardite.RefAssistant.11.0.vsix dosyasını indirin

2) Uzantıyı zip olarak değiştirin: Lardite.RefAssistant.11.0.vsix->Lardite.RefAssistant.11.0.zip

3) Bilgisayarın extension.vsixmanifest Dosyayı metin düzenleyicisinde

4) Tüm oluşumlarını bulun InstallationTarget Version="[11.0,12.0)"ve değiştirinInstallationTarget Version="[11.0,12.0]" (kapatma braketine dikkat edin)

5) Dosyayı kaydedin ve kök zip düzeyinde olacak şekilde tüm dosyaları zipleyin

6) Yeni uzatılmasını değiştirme zipiçinvsix

7) yükleyin ve keyfini çıkarın :)

VS2013 ile test ettim , eğitim için teşekkürler kaynak

EDIT VS 2015 Topluluk Sürümü'nü desteklemek için ekleyin

<InstallationTarget Version="[14.0,15.0]" Id="Microsoft.VisualStudio.Community" />

Parantezlerin anlamı

[ – minimum version inclusive.

] – maximum version inclusive. 

( – minimum version exclusive. 

) – maximum version exclusive.

1
Bu gayet iyi çalışıyor! O zamanlar yazar tarafından yıllar önce düzeltilmiş olabilen basit bir yazım hatası gibi görünüyor - ama ortadan kayboldu, en azından web sitesi ...
wexman

Bir yazım hatası değil, desteklenen en yüksek VS sürümü :). Geliştiricinin eklentisini her yeni VS sürümü ile test etmesi ve sayıyı artırması gerekiyor, ancak bir nedenle bunu yapmadılar.
2015 VladL

"Kopyala ve yapıştır" öğelerini durdurmayı unutmayın. :)
Rikki

@RikkiRockett Bana hitap ediyor musun? Cevabımda kaynağı bağladım. Veya tam olarak ne demek istiyorsun?
VladL

2
Hayır dostum. Şaka yapıyordum. Sadece ")" yerine ")" koyan ahbapta hepimizin talimatlarını okumasını sağladı. :) Güzel iş olsa da, sadece söylediklerini yaptı ve hepsi iyi! Beni bununla mücadele ettiğim bir gün kurtardın. (y)
Rikki

7

Reference Assistant uzantısını kullanabilirsiniz Visual Studio eklenti galerisinden.

Visual Studio 2010 için kullanılır ve çalışır.


2
Web projelerine dikkat etmelisiniz. "Kullanılmayan" olarak kullanılan DLL'leri bildirir.
Miro

Miro'ya katılıyorum. Bunu web projemle kullanmaya çalıştım ve web uygulamamı çalıştırmak için gereken iki düzine referans seçti (System.Web. *, Ninject. *, EntityFramework, sadece birkaç isim).
Denis M. Kitchen

MVC projesi ile çalışmıyor. Temel DLL .Helpers ve .WebPage
User.Anonymous


-3

Aşağıdaki yöntem herhangi bir 'eklentiye' bağlı değildir ve çok acı verici değildir.

Kaynak dosyalarınızın her birinde ilerleyin ve

  1. Tümünü seç (Ctrl-A)
  2. Anahat genişletmeyi aç / kapat (Ctrl-M, M). Bu dosyayı iki satıra indirecektir.
  3. Ad alanının '+' simgesini tıklayın. Bu, dosya sınıflarının her birini tek bir satır olarak gösterir. Referanssız sınıfları arayarak her sınıfın referans sayısını tarayın.
  4. '' + 'Sınıflarının her birini tıklayın. Bu, sınıf işlevlerinin her birini tek bir satır olarak gösterecektir. Her bir işlevin referans sayısını tarayarak referanslandırılmamış işlevleri arayın.

'0 referans' arayan her dosyayı taramak sadece bir saniye sürer.

Tüm bir projeyi taramak sadece birkaç dakika sürer.


-11

VB2008'de şu şekilde çalışır:

Project>Add References

Son zamanlarda kullanılan referansların listesini görebileceğiniz Son sekmesini tıklayın. İstemediğinizi bulun ve silin. Sonra hiçbir şey eklemeden kapatırsınız.


1
Bu referansın kullanılıp kullanılmadığını kontrol etmez
Xavier Poinas

-12

Visual C # içinde bir başvuru kaldırmak için Solution Explorer'da proje düğümü altındaki Başvurular düğümünü açın. Bir referansı sağ tıklayın ve Kaldır'ı tıklayın.


3
Bu, sadece kullanılmayan veya otomatik çalışma ile sınırlı görünmüyor.
Nathan Tuggy

otomatik işlem değil.
Amir

iyi denenmiş, ama kötü cevap, daha önce söylendiği gibi otomatik değil
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.