Paket geri yüklemeyi kullanırken .nuget klasöründeki nuget.exe dosyasını otomatik olarak güncellemenin bir yolu var mı?


93

Ekibim, paketleri kaynak kontrolümüzün dışında tutmak için Nuget 1.5'ten beri Paket Geri Yüklemeyi Etkinleştir seçeneğini kullanıyor. Nuget 1.6 piyasaya sürüldüğünde, paketleri aşağı çekmediği bir sorun fark ettik ve Paket Yöneticisi ile eşleşmesi için 1.6'ya güncellenmesi gereken .nuget klasöründeki Nuget.exe'ye kadar takip ettik.

Nuget yenilendikten sonra bir çözümü güncellemenin en iyi yolu nedir? Studio'dan çözüm klasöründe hangi nuget sürümünün bulunduğunu anlamanın kolay bir yolunu görmüyorum. Şimdiye kadar .nuget klasörünü uçurduk ve Paketi Geri Yüklemeyi Etkinleştir komutunu yeniden çalıştırdık.

Yanıtlar:


149

.Nuget \ nuget.exe'yi komut satırından bu komutla güncellemenizi öneririm:

nuget.exe update -self

[DÜZENLE]: Önce VS Solution'ı kapatın. Bir güncelleme varsa ve çözüm açılırsa, nuget.exe çözümden kaldırılacaktır.

Sen olabilir yukarıdaki komutu eklemek için .nuget \ nuget.targets değiştirerek geri otomatik nuget.exe güncelleyin. Örnek olarak oradaki geri yükleme komutuna bakardım. Ancak buna değip değmeyeceğinden emin değilim, nuget.exe güncellemeleri o kadar yaygın değildir ve geriye dönük uyumluluk çok nadiren bozulmalıdır.


Bunu projelerimden birinde denedim. NuGet.exe dosyasını güncelledi ancak benim çözümümden kaldırmış gibi görünüyordu. Geri ekleyebileceğimi biliyorum ama bu tuhaf görünüyordu.
Rick

Ah doğru, bu sefer gerçek bir güncelleme denedim ve nuget.exe benim için VS çözümünden de kaldırıldı. (NuGet.exe güncel olduğundan bunu daha önce alamadım). Bunun nedeni, güncelleme sırasında geçerli nuget.exe'nin ilk önce nuget.exe.old'a taşınması ve bu nedenle dosya başvurusunun bozuk olmasıdır. Bunun düzeltileceğinden şüpheliyim, komutu çözüm kapalıyken çalıştırırım.
Alexandre Dion

Kendi kendine güncellemeyi yapmak size yeni bir NuGet.targets dosyası vermeyecek gibi görünüyor, bu bir sorun olabilir. NuGet ekibinin 1.6 ve 1.7 sürümleri arasında hedef dosyasında bazı değişiklikler yaptığını düşünüyorum.
William Gross

@William Gross, nuget.org/packages/NuGet.Build (nuget.targets'ı içeren paket budur) için bir güncelleme olup olmadığını kontrol edebilirsiniz
Alexandre Dion

benim için çalıştı, sadece
Mohammad

31

Bunu halletmenin en iyi yolunu, .nuget klasörünü silerek ve çözüm genelinde paket geri yüklemesini yeniden etkinleştirerek buldum. Yukarıda belirtildiği gibi, yapınıza bir kendi kendine güncelleme komutu ekleyebilirsiniz, ancak bu, sürümler arasında değişiklikler olması durumunda hedefleri veya yapılandırma dosyalarını güncellemeyecektir (veya referansı çözümünüzden kaldırmayacaktır). Belki de o kadar önemli değil, ancak bu, en son exe ve yapılandırma dosyalarına sahip olduğunuzdan emin olmanın kesin yolu. Ve günün sonunda, güncelleme yalnızca yeni bir komuta erişmeniz gerektiğinde veya nihayetinde yeni bir sürümde önemli bir değişiklik olduğunda sorun olur.


3
1 - Bu güncellemeler almak için en iyi yolu olduğunu bulduk NuGet.exe yanı sıraNuGet.targets (ayrıca önemlidir) dosyası. NuGet.targetsDosyaya yaptığınız tüm özelleştirmeleri kaydettiğinizden emin olun (örn. Özel Paket Kaynakları), böylece bunları yeni dosyaya yeniden uygulayabilirsiniz.
Jesse Webb

benim için çekicilik gibi çalıştı harika! bilgi için teşekkürler
Gayan

-3

David Ebbo'nun blogundaki gönderisine bakın

Temel olarak, yapmanız gereken tek şey .sln dosyanızın yanında aşağıdakileri içeren bir NuGet.Config dosyası oluşturmaktır:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear/>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
    <add key="aspnetwebstacknightlyrelease" value="https://www.myget.org/f/aspnetwebstacknightlyrelease/" />
  </packageSources>
</configuration>

1
Soru, paket geri yüklemeyi kullanırken nuget.exe'nin en son sürüme otomatik olarak nasıl güncelleneceğini sorar. David Ebbo'nun blog yazısı yalnızca nuget.exe kullanılarak paketlerin nasıl geri yükleneceğini açıklar.
Frith

O halde sorunun başlığına ve kabul edilen cevaba bakarken muhtemelen sorunun hangi bölümünü cevaplayacağınızı belirtmelisiniz, bu cevabın yanlış yerleştirilmiş olduğunu düşünmek kolaydır ...
Jens
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.