Çözümümdeki herhangi bir proje tarafından referans verilmeyen NuGet paketlerini nasıl silebilirim?


141

Bir şekilde VS2012 ve .NET 4.5'e yükseltme sırasında, NuGet'in kafasını karıştırmayı başardım. Ben silemezsiniz Bu paket yöneticisinde görünür (ve paketleri klasörü) paketleri vardır (onlar yeni sürümü ile yeni bir paket adlarıyla değiştirilmiştir eski ASP.NET Nuget paketleri olduğuna inanıyoruz. Her yalnızca bir yönetme düğmesi - ama hiçbir kaldırma düğmesi Ve kullanıldıkları yerlerde, onlar çözümün projelerin onlar edilir hiçbiri tarafından başvurulan görebilirsiniz görmek baktığınızda.? dEĞİL bir Kaldır görüntüleniyor?

Yanıtlar:


108

Paket Yöneticisi Konsolu'nu şu komutla kullanabilirsiniz: Uninstall-Package PackageIdkaldırmak için veya paket klasörünü çözüm klasörü altındaki 'paket' klasöründen silebilirsiniz. Paket Yöneticisi Konsolu hakkında daha fazla bilgiyi burada bulabilirsiniz: http://docs.nuget.org/docs/reference/package-manager-console-powershell-reference


8
Teşekkürler Pavel. Klasörleri silebileceđini hissettim. Biraz rahatsız edici çünkü elle paketlerin hiçbirine başvurulmadığından emin olmak zorundayım (öyle görünmüyorlar). Paket yöneticisinin neden Kaldır (veya kaldır) düğmesi göstermediğini hala merak ediyorum.
Howard Pinsley

2
Çözüm düzeyindeki paket yöneticisi, çözümden projelere yapılan tüm paket referanslarını ve paketleri klasörüne yerleştirilen, ancak başvuruda bulunmayan tüm paketleri görüntüler. Bu paketler için kullanıcı arayüzünde kaldırma özelliği yoktur. Yanlış davranışın sonucu olduğuna katılıyorum, ancak bu durumda manuel olarak kontrol etmelisiniz. Gereksinim duyup duymadığınızdan emin olduğunuzda paketi silin veya yeniden yükleyin.
Pavel Bakshy

1
Sadece klasörü kaldırarak NuGet'e dönüp paketi görünce, bir şekilde yanında yeşil onay işaretiyle yüklü olarak görüntüleniyor, konsolu kullanarak uygun kaldırma işlemini yapmak daha iyi.
k80sg

1
@ysrb, get-user veya remove-item gibi fiil-isim kullanan bir powershell komutu, örneğin isim-fiildir
Nick Young

1
@ysrb Nick Young'ın dediği gibi, ayrıca korkunç bir iltifat olurdu Install-Package.
ProfK

159

Bunun için bir çözüm buldum.

  1. Paket geri yüklemeyi ve otomatik denetimi etkinleştir (Seçenekler / Paket Yöneticisi / Genel)
  2. Packages klasörünün tüm içeriğini silin (gerginseniz Geri Dönüşüm Kutusu'na!)
  3. Nuget Paketlerini Çözüm İçin Yönetin
  4. Geri yükle düğmesini tıklayın.

NuGet yalnızca çözümünüzde kullanılan paketleri geri yükleyecektir . Sonunda güzel, akıcı bir paket seti ile sonuçlanırsınız.


1
Bu olmaz değil gelen paketi kaldırmak packages.configve yok projesinden başvuruları kaldırın?
CodeCaster

1
@CodeCaster çifte negatif ayrıştırma zor. Yapılandırma ve referanslardan hiçbir şey kaldırılmayacak. Buradaki fikir, artık referans verilmeyen NuGet paketlerini kaldırmaktır
James L

1
Mükemmel cevap! TFS kullanıyorsanız, önce build countroll explorer'daki ./packages içindeki tüm içeriği silmelisiniz, böylece derleme makineleri gibi diğer istemciler de gereksiz öğeleri kaldıracaktır.
Alexander Schmidt

4
@ sprinter252, paket geri yüklemesini kullanıyorsanız, paketleri ilk etapta kaynak kontrolünde kontrol etmeniz gerekmez. Bu, paket geri yüklemeyi kullanmanın ana avantajlarından biridir. Paket geri yüklemeye dönüştürmenin bir parçası olarak, paketleri klasörüne 'yoksay' kuralı yerleştirilmelidir.
Carl Bussema

@CarlBussema Haklısın. Yeni NuGet sürümünden beri bu çok önemli değil çünkü Nuget alt klasörlere herhangi bir ikili dosya eklemeyecektir. Yani sadece klasör yapısını alıyorsunuz. Yorumum, TFS'nin (paket klasörü dahil) varsayılan davranışı ile ilgiliydi. TFS'de Anywhere yok sayılır ;-). Xamarin ile karma projeler için önemlidir.
Alexander Schmidt

17

Önce Package Manager Console'u açın. Ardından açılır listeden projenizi seçin. Ve nuget paketlerini kaldırmak için aşağıdaki komutları çalıştırın.

Get-Package

Yüklediğiniz tüm paketi almak için.

ve sonra

Uninstall-Package PagedList.Mvc

--- PagedList.MVC adlı bir paketi kaldırmak için

İleti

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

Bu cevap benim için mükemmel çalıştı. Benim durumum, paketin yalnızca iletişim kutusunun Güncellemeler sekmesi altında görünmesiydi ... ve Güncelle'ye bastığımda hiçbir projeye paket yüklenmemişti - bu yüzden güncellemenin veya kaldırmanın hiçbir yolu yoktu.
azarc3

8

Çözümlerinizdeki birden fazla projeye uygulanan Nuget paketini silmek / kaldırmak istiyorsanız şu adrese gidin:

  1. Araçlar-> Nuget Paket Yöneticisi -> Çözüm için Nuget Paketlerini Yönetin

  2. 'Yüklü paketler'in bulunduğu sol sütunda' Tümü'nü seçin, böylece yüklü paketlerin bir listesini ve aralarında Yönet düğmesini görürsünüz.

  3. Yönet düğmesini seçtiğinizde, bir açılır pencere alırsınız, proje adındaki onay kutusunun işaretini kaldırın ve Tamam

İşin geri kalan kısmı Paket Yöneticisi bunu sizin için yapacak.


1
Bu kesinlikle aradığım cevap, teşekkürler!
Sal

3

Uninstall-Package yardımcı programını kullanarak paketi kaldırdıysanız ve istediğiniz paketi çözüm altındaki paket dizininden sildiyseniz (ve hala hata alıyorsanız), * .csproj dosyasını kod düzenleyicide açın ve etiketi el ile kaldırın. Örneğin gibi ben Nuget paket kurtulmak istedim Xamarin.Forms.Alias ve ben * .Csproj dosyasından bu satırları kaldırıldı.

Nuget paketini msbuild komut dosyasından kaldırma

Son olarak, Visual Studio'da (proje dosyasını değiştirdikten sonra) istendiğinde projenizi yeniden yüklemeyi unutmayın. Visual Studio 2015'te denedim, ancak Visual Studio 2010 ve sonrasında da çalışması gerekir.

Bu yardımcı olur umarım.


2

Alternatif olarak, çözümünüzün herhangi bir projesine silmek istediğiniz kullanılmayan paketi yüklemek, bundan sonra kaldırmak ve Nuget de kaldıracaktır.

Burada uygun bir kaldırıcıya ihtiyaç vardır.


Yeniden yüklemeden düzgün bir şekilde kaldırmanın bir yolu var mı?
Knox

2

Çözüm 1

Paketleri almak için powershell boru hattını kullanın ve bunun gibi tek bir ifadede kaldırın

Get-Package | Uninstall-Package

Çözüm 2

seçilen paketleri kaldırmak istiyorsanız şu adımları izleyin

  1. GetPackagesPaketlerin listesini almak için kullanın
  2. Nimble metin yazılımını indirin
  3. Çıktısını kopyala GetPackagesNimbleText (Liste penceresindeki her satır için)
  4. Sütun Ayırıcı'yı (gerekirse ayarlayın
  5. Tür Uninstall-Package $0(Desen penceresini kullanarak değiştir)
  6. Sonuçları kopyalayın ve Package Manage Console'a yapıştırın

Hepsi bu kadar millet.


1

Bir NuGet paketi başka bir NuGet paketine başvurabilir. Bu yüzden, lütfen paketler arası bağımlılıklara çok dikkat edin. Bir Google harita paketini yeni kaldırdım ve daha sonra Newtonsoft, Entity Framework vb.

Bu nedenle, belirli bir paketi paket klasöründen manuel olarak silmek daha güvenli olacaktır.


1

Paket Yöneticisi konsolu penceresinden, bir paketi yüklemek için kullandığınız komut çoğu zaman bu paketi kaldırmak için kullanılabilir. INSTALL komutunu UNINSTALL ile değiştirmeniz yeterlidir .

Örneğin, PowerTCPTelnet'i yüklemek için komut şöyledir:

Install-Package PowerTCPTelnet -Version 4.4.9

Aynısını kaldırmak için komut:

Uninstall-Package PowerTCPTelnet -Version 4.4.9


1

VS2019> Araçlar> Seçenekler> Nuget Paket Yöneticisi> Genel> "Tüm Nuger Önbelleklerini Temizle" ye tıklayın


-2

Diğer bir yol ve en basit olarak benim için:

  1. Soution'unuza gidin ve sağ tıklayın.

  2. "Çözüm için Yönetilen NUgets Paketleri" seçeneğini seçin. Açılır pencereyi açan "Ayarlar" düğmesine tıklayın. Bu, diğer açılır pencereyi açar ve sonra "Paket Yöneticisi" ni arar.

  3. "Paket Yöneticisi" seçeneği içinde iki seçeneğiniz daha vardır (I. Genel II. Paket Kaynakları) Her seçenekte tüm onay kutusunun işaretini kaldırın.

Bu adımlar NuGet'i projenizden devre dışı bırakır.

Umarım size gerçekten yardımcı olur.


-2

Visual Studio seçeneğini kullanmak istiyorsanız, lütfen aşağıdaki bağlantıya bakın

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

Adım 1: Visual Studio'da, Araçlar / NuGet Paket Yöneticisi'ne gidin / Çözüm için NuGet Paketlerini Yönetin…

2. Adım: Projenizin mevcut çözümden işaretini kaldırın

Adım 3: Projelerin seçimini kaldırın ve Tamam'a basın


2
Cevabın ileride süresi dolabileceğinden, cevabı sadece bir link göndermek yerine StackOverflow'a yazmak tercih edilir.
Amadeus Sánchez
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.