nuget paketini çözümden kaldır


148

Nuget paketi geri yükleme özelliğini 'NuGet Paket Geri Yüklemeyi Etkinleştir' seçeneğini kullanarak bir çözüme ekledim: http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

Ancak benim yapı sunucumu kırdı ve düzeltmek için zaman yoktu, bu yüzden kaldırmak istedim. Bildiğim kadarıyla bunun için bir seçenek yok, bu yüzden aşağıdaki satırı tüm * .csproj dosyalarımdan manuel olarak kaldırdım:

<Import Project="$(SolutionDir)\.nuget\nuget.targets" />

Sorun şu ki, * .csproj dosyalarım her kontrol edildiğinde veya çözümümü açtığında, satır otomatik olarak tekrar eklenir ve yanlışlıkla kontrol edersem derlemimi kırar :(

Nasıl kalıcı olarak kaldırabilirim?

GÜNCELLEME: Aşağıdaki cevaba rağmen çözümü açarken hala geri gelmeye devam ediyor, aynı problemi olan biri var mı?


2
Kaynak kontrolündeki değişiklik kümesini geri alamaz mısınız?
Betty

Peki oldukça büyük bir değişiklikti, ama yorumunuz sayesinde bir gözüm vardı ve aynı zamanda çözüm yoluna bir .nuget klasörü eklenmiş gibi görünüyor, sorunu
çözüp çözmediğini

Yapı sunucusunu düzeltmeyi başardınız mı? (ve bu teamcity mi?), çünkü yukarıda bahsettiğiniz ithalat proje hattı benim teamcity yapılarımın başarısız olmasına neden oluyor
Baldy

@Baldy Hayır TFS Build kullanıyoruz ve gerçekten bir çözüm aramadım, sadece kaldırdım (hala daha sonra dalmayı planlıyoruz)
Wiebe Tijsma

3
NuGet ekibinin bu sorunu çözmesi için bir sorun oluşturdum. Lütfen yukarı oy verin nuget.codeplex.com/workitem/3756
deadlydog

Yanıtlar:


214

Çok iyi görünmüyordum, proje dosyalarına başka bir özellik eklendi:

<RestorePackages>true</RestorePackages>

Bunu ve tüm bu satırları tüm * .csproj dosyalarından manuel olarak kaldırmanız yeterlidir:

  <Import Project="$(SolutionDir)\.nuget\nuget.targets" />

GÜNCELLEME:

Kalıcı bir küçük hata olduğu ortaya çıkıyor, eğer proje dosyalarınızı manuel olarak düzenliyorsanız , çözümü kapattığınızdan ve projedeki tüm satırları bir kerede sildiğinizden emin olun , aksi takdirde proje yeniden yüklendikten sonra tekrar eklenirler ...

Update2:

Çözüm kökünden de .nuget klasörünü silin

Update3:

NuGet'in sonraki bir sürümü, kaldırmanız gereken başka bir bölüm ekler:

 <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
  </Target>

Update4

İçinde NuGet.Targetsbulunan .nugetklasöre false bunu geçiş ... yeni projeler ekleniyor başka bölümü vardır.

<!-- We need to ensure packages are restored prior to assembly resolve -->
<BuildDependsOn Condition="$(RestorePackages) == 'false'">
    RestorePackages;
    $(BuildDependsOn);
</BuildDependsOn>

7
Ben de bir <Import Project="$(SolutionDir)\.nuget\nuget.targets" />.csproj dosyasının sonunda el ile kaldırılması gereken olduğunu bulduk .
TimDog

6
HA! yavaş yavaş geri
çekiliyor

5
Bu şey beni de rahatsız ediyor. Projeleriniz birçok farklı çözümdeyse, paket geri yükleme özelliği sorunlara neden olur.
Damian

7
"Çözümü kapattığınızdan emin olun", VS2010 csproj / msbuild dosyalarını (bazı değişiklikleri almadan) önbelleğe aldığından, burada çok önemli. Bu davranışı VS2012'de fark etmedim, ancak bu dosyaları VisualStudio'da değiştirirken beni çok rahatsız etti.
Xavier Decoster

4
NuGet ekibinin bu sorunu çözmesi için bir sorun oluşturdum. Lütfen yukarı oy verin nuget.codeplex.com/workitem/3756
deadlydog

48

Nuget Paket Geri Yüklemeyi devre dışı bırakmak için:

  1. .Nuget klasörünü sil
  2. Tüm .csproj dosyalarından belirli satırları kaldırma

Kaldırılacak hatlar:

<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
<RestorePackages>true</RestorePackages>

Not: Çözümü yeniden yüklemeden önce tüm değişiklikleri tek seferde yaptığınızdan emin olun, aksi takdirde bunları geri ekler.

Bu, aşağıdaki makaleye dayanmaktadır: http://bartwullems.blogspot.no/2012/08/disable-nuget-package-restore.html

Ayrıca, bu seçeneğin devre dışı olduğunu tekrar kontrol etmek isteyebilirsiniz: http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages


NuGet ekibinin bu sorunu çözmesi için bir sorun oluşturdum. Lütfen yukarı oy verin nuget.codeplex.com/workitem/3756
deadlydog

1
Teşekkürler, benim için sadece bu seçeneği etkisiz hale getiriyordu
Maarten Kieft

IFix aracını birçok projeyle depoları temizlerken büyük bir başarıyla kullandım. Temel olarak bu adımları otomatik hale getirir. visualstudiogallery.msdn.microsoft.com/…
angularsen

.Nuget klasörü gizlidir ve kaldırmak için gereken dizinde sadece bir proje.
Erik Bergstedt

8

Burada bu ayar değil mi?

Seçenekler ... -> Nuget Paket Yöneticisi -> [işaretini kaldır] Nuget'in eksik paketleri indirmesine izin ver

resim açıklamasını buraya girin

Visual Studio Professional + Resharper 8.2 kullanıyorum


Paketler klasörünü sildim ve sorunumu çözmek için paket önbelleğini temizledim. Teşekkürler!
Tresto

1
Hayır, sonra .proj dosyalarını güncellemez - bu nedenle sorun geri döner - ancak burada da yapılması iyi :-)
schmoopy

Çıktı penceresi bunu oluştururken gösterir: Restoring NuGet packages... To prevent NuGet from restoring packages during build, open the Visual Studio Options dialog, click on the Package Manager node and uncheck 'Allow NuGet to download missing packages during build.'bu sadece yolun bir yoludur.
Müslüman Ben Dhaou

1
Bu, Nuget Paket Geri Yükleme ile ilgisi yoktur. VS'nin eski sürümlerinde, “Klasör Paketi Geri Yüklemeyi Etkinleştir” başlıklı projeler için bir .nuget/klasör oluşturacak ve .csprojbir .targetsdosyaya başvurmak üzere değişiklik yapacak bir bağlam menüsü öğesi vardı . Sen işlemek gerekiyordu nuget.exe(! Sorun Nuget çözer unsolving, Eww) ve bunun gibi çirkinlik VCS için. Günümüzde, msbuild /restoreVS ve yerleşik paket geri yükleme var. OP, VS'nin doğru yerleşik paket geri yükleme desteğini nasıl devre dışı bırakacağınızı değil, eski, kötü şeyler yapmanın nasıl kaldırılacağını soruyor.
binki

5

Şu anda MSBuild-Integrated paket geri yüklemesini kullanan çözümler Otomatik Paket Geri Yüklemeye geçirilebilir. Anladığım kadarıyla, bu, CI ile karşılaşanların sorunları oluşturmasına yardımcı olmalıdır. (Yanılıyorsam lütfen beni düzeltin).

Lütfen nuget web sitesindeki belgeye bakın: http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore adresindeki Otomatik Paket Geri Yükleme'yi kullanmak için MSBuild-Integrated çözümlerini geçirme

TFS ile ve TFS olmadan dönüştürme için orada bilgi var.

David Ebbo ayrıca http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html adresine bazı bilgiler de gönderdi.



3

NuGet'in otomatik paket geri yüklemeye geçişle ilgili bir blog yazısı var: http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore

Blog yayınında başvurulan gerekli satırları otomatik olarak (ve yinelemeli olarak) kaldırmaya özen gösterecek bir powershell betiği vardır : https://github.com/owen2/AutomaticPackageRestoreMigrationScript/blob/master/migrateToAutomaticPackageRestore.ps1

NuGet Paket Geri Yüklemeyi Devre Dışı Bırak seçeneğini doğrudan sunma Düzeltilemez olarak işaretlenir: https://nuget.codeplex.com/workitem/1883


2

Kabul edilen çözümü 2012 kullanarak boşuna takip ettim. Bu işe yaradı,

  1. VS'yi tamamen kapatın
  2. Güncelleme <RestorePackages>true</RestorePackages>için <RestorePackages>false</RestorePackages>ve silme <Import Project="$(SolutionDir)\.nuget\nuget.targets" />hattı
  3. Ayrıca yeniden adlandırıldı nuget.exeiçinnuget.exe.NotExe

2

Eski stil NuGet paket geri yüklemesini kullanarak bir projeyi temizlemeye ihtiyaç duyan herkes için, burada bulunan IFix aracı işlemi otomatik hale getirir.

Yükleyiciyi çalıştırmanız ( IFixeklenecek PATH) ve ardından aşağıdakileri çalıştırmanız yeterlidir:

IFix nugetrestore --fix

Neyi temizleyeceğini görmek için önce kontrol modunda çalıştırabilirsiniz:

IFix nugetrestore --check

1

Aynı sorunu yaşadım. Ne yaptım sonuçlandı: 1) çözümde her proje .csproj dosyasına gidin, not defterinde açın ve sonra xml bölümünü kaldırdı ve kaydedildi.

2) Daha sonra tüm çözümdeki package.config dosyalarının tümünü kaldırdım.

3) Sonra .nuget ve paket klasörlerini kaldırmak zorunda kaldım.

Bu noktada tamamen NuGet içermeyen bir çözüm buldum.

4) Daha sonra gerekli DLL'leri manuel olarak referans aldım ve derlemeyi vurdum ve çözüm NuGet paketleri gerekmeden bir şampiyon gibi koştu.


1

[$(SolutionDir)\.nuget\nuget.targets] .nugetKlasörünüzün bulunduğu klasör ve nuget.targetsdosyanızın bulunduğu çözüm dizininize gidin ve son kez bir kez daha csproj'unuzdan satırları kaldırın .

Sorun tekrar sizi rahatsız etmeyecek.


1

Çözümünüzdeki Packages.config dosyasını kaldırın .


0

VS2012 RC projemi açarken yanlışlıkla bu "paket geri yükleme" seçeneğini etkinleştirdi ve şöyle bir şey gibi hatalar almaya başladı:

"Hata 1 'C: \ FolderX \ SomeProject.nuget \ nuget.exe' bulunamadı."

Hatayı düzeltmek için yukarıdaki talimatları izledim, her proje dosyasını not defterinde açtım ve o RestorePackage satırını kaldırdım.


0

Şu adımları uygulayarak bu sorunu çözebildim:

1) mevcut teslim alınan tüm dosya değişikliklerinizin bir yedeğini aldığınızdan emin olun.

2) çözüm klasörünü fiziksel olarak C: \ 'nizden (TFS ile eşlenen yol) silin.

3) çözüm için TFS en son olsun.

4) 1. adımda aldığınız yedeklemeden değişikliklerinizi (varsa) kopyalayın.

umarım yardımcı olur !


-2

Aynı sorunla karşılaştım ve tüm .nuget ve RestorePackage etiketlerini proje dosyalarından kaldırmaya çalıştım, ancak bir proje .nuget ve RestorePackages etiketleri için ne kadar iyice incelediğim önemli değil. Sanırım bu konuda bazı gizli referanslar var.

Sonunda sadece dosyaları kopyalayıp yeni bir proje oluşturmak ve çözüme aktarmak daha kolaydı.


-8

Nuget berbat. Sadece nugets kaldırmak ve paket öğeleri köklerin projelerin kök dizininde Packages.config kaldırmak veya yorum. Bunun yerine doğrudan bazı lib klasörlerine referanslar kullanın.

<?xml version="1.0" encoding="utf-8"?>
  <packages>
    <!--<package id="EntityFramework" version="6.0.2" targetFramework="net45" />-->
  </packages>

Nasıl kullanılacağını bilmiyorsanız ve anlamak için çaba göstermezseniz, diğer herhangi bir ürün gibi 'berbat'.
Wiebe Tijsma

Bu doğru, ama benim görüşüme göre dürtülmüş size proje üzerinde yeterli kontrol vermez. Ayrıca Nuget GUI'nin bazı ciddi yükseltmelere ihtiyacı var. 1. Onun sezgisel değil, 2. paketi yönetmek zor 3. geri kapatmak kapatmak zor 4. Gereksiz paketleri indirir 5. Bazen onun pacakges geri yükleyemiyor
Igor N

Bir dereceye kadar katılıyorum, ancak hiçbir paket yöneticisine sahip olmadığını gerçekten bence. Nuget 3.0 için ciddi GUI yükseltmeleri üzerinde çalışıyorlar gibi görünüyor: blog.nuget.org/20141112/nuget-3.0-preview.html
Wiebe Tijsma
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.