Nuget PACKAGE klasörünü sürüm kontrolüne dahil etmeli miyiz?


68

bilmek isterim

C # veya VB.NET projesinde, PACKAGE klasörünü (nupkg dosyalarını ve diğer içerikleri içeren projemin kökünde oluşturulan külçe paketi klasörü) kaynak kontrol havuzumuza (örneğin Git) dahil etmeliyiz.


Kesinlikle Evet , çünkü bu dosyalar kodunuzun bir parçası ve projeniz onlar olmadan oluşturulmayacak.
Sharky

SO da benzer bir soru sordum. Ayrıca cevaplar için oraya da bakabilirsiniz: stackoverflow.com/questions/1710027/… :)
cwap

Maven dünyasındaki kimsenin neden "sürüm kontrolüne 3. parti libleri eklemeliyiz" diye sormadığını merak ediyorum. Çok inandırıcı olmasa da, libleri işlemek DEĞİL için sağlam bir karşı argüman bulun.
Hoàng Long

Yanıtlar:


28

Çok zaman geçti ve NuGet değişti, işte yeni bir cevap.

NuGet artık kaynak yapınızda bir paket klasörü oluşturmuyor. Bunun yerine, kullanıcı dizininizde ( %HOME%\.nuget\packagesspesifik olmak üzere) indirdiği tüm paketleri koyduğu bir tane var ve projeler bunlara sadece referans veriyor.

Yani bugünlerde basit cevap hayır, yapmamalısın. Kaybetmeniz gereken paketler konusunda endişeleniyorsanız, ayrı olarak yedeklediğiniz yerel bir NuGet aynası oluşturmalısınız.


6
VS2015'deyim (VS2017'nin bu cevabı yazmadan sadece 3 gün önce piyasaya sürüldüğünü düşünün) ve paket klasörü benim çözüm kökümde bulunuyor. NuGet'in nasıl ve ne zaman değiştiğini merak ediyorum.
Teejay

NuGet, VS2015 zaman diliminde ara sıra bant dışı bırakılan sürüm 3 ile değişti.
Sebastian Redl

İş bilgisayarımı yeni kontrol ettim ve paketler bahsettiğiniz yer. Ama ev bilgisayarımda proje dizinindeler. Her ikisi de VS2015'te (profesyonel @ iş, topluluk @ ev) ve evden biri çok yeni bir kurulum ... Bu garip.
Teejay

12
Yeni geçen hafta VS 2017'yi yükledim, dün yeni bir proje oluşturdum ve projemde bir paket dizini var.
Jeremy,

2
CI için ne yaparsın? Tüm nuget paketlerini tekrar tekrar indirebilir misiniz? (TBH: Ben, kendim, fikrimin ne olduğu konusunda net değilim)
Tomer W

50

Değişir.

Check out Bart van Ingen Schenau yanıtını bunu göz ardı etmek mümkün olup olmadığını belirlemek için packagestüm klasörü.

Temel olarak: evet, NuGet packagesklasörü görmezden gelebilecek şekilde tasarlanmıştır ve NuGet eksikse İnternetten her şeyi alacaktır.

Ama görmezden gelmelisin? Ben söylüyorum: bağlıdır.
IMO, “Paket deposunun bulunmaması durumunda çalışmaya devam edebilir miyiz” sorusu ( geçici veya kalıcı olarak olabilir).

Kişisel OSS projelerim için packagesklasörü hepsinde görmezden geldim .
Nuget.org çevrimdışı olduğunda, sadece bekleyip başka bir gün devam edeceğim.

Ama işte farklı bir şey.
Tabii, muhtemelen bazı makinelerde yerel olarak hala paketleriniz var, ancak derlemeleriniz kırılırken derleme sunucunuz nuget.org'a ulaşamadığı için uğraşınıza değer bir alan kazandırıyor?

Alanın ucuz olduğuna karar verdik ve uğraşmak istemiyoruz, bu yüzden packagesklasörü kaynak kontrolü için taahhüt ediyoruz .


1
Nuget.org hangi sıklıkla kullanılamaz?
Bartosz

4
Muhtemelen çok sık değil. Ama belki de “çevrimdışı” yerine “erişilemez” demeliydim. Birkaç yıl önce, bir ekskavatörün yanlışlıkla beynimize giden internet kablosunu kestiği bir olay yaşadık. Tamir etmek bir günden fazla sürdü. Eğer nuget.org'a güvenmiş olsaydık, projelerimizi kuramazdık. (evet, biliyorum, bugünlerde NuGet paketleri yerel olarak önbelleğe alıyor ... ama o zamanlar değil)
Christian Specht

Paket klasörünü teslim etmediğiniz zamanlarda derleme sürelerinin çok daha uzun olacağını söyleyeceğim, çünkü derleme süresinin çoğunu paket geri yükleme işlemi sırasında harcıyor.
AaronLS

29

Kaynak kontrol havuzuna ne girdiğinin temel kuralı, projeyi oluşturmak, test etmek, uygulamak ve yürütmek için ihtiyacınız olan ve depoda zaten mevcut olan öğelerden üretilemeyecek bir proje ile ilgili her şeyi orada saklamanızdır. .

Başka bir deyişle, PACKAGE klasörünü ve içeriğini yeteneğinizi etkilemeden atabilirsiniz, proje üzerinde çalışmaya devam edebilirsiniz (derleme daha uzun sürebilir, ancak kendiniz bir şey avlamak ve yüklemek zorunda kalmazsınız), güvenli bir şekilde depodan uzak durun.
Klasörün indirilmesi uzun zaman alabilen veya kullanılamayacak olan 3. taraf paketler içeriyorsa, bu durum onları yine de havuzunuza eklemek için bir neden olabilir.


20
Projede kullanılan herhangi bir 3. parti kodun bir sürümünü güvenli bir şekilde saklamanız gerektiğini, 3. parti projenin kaldırılması, onu barındıran site vb. Olması gerektiğini eklerdim. . Bu, ayrıca gerekirse, bu kodun önceki bir sürümüne geri dönme fırsatı sunar.
Bent
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.