NuGet 2.8 Sürüm Notları
NuGet 2.7.2 Sürüm Notları | NuGet 2.8.1 Sürüm Notları
NuGet 2.8, 29 Ocak 2014'te yayımlandı.
Bildirimler
[Llewellyn Pritchard](https://www.codeplex.com/site/users/view/leppie)
(@leppie)[#3466](https://nuget.codeplex.com/workitem/3466)
- Paketleri paketlerken bağımlılık paketlerinin kimliğini doğrulama.
[Maarten Balliauw](https://www.codeplex.com/site/users/view/maartenba)
(@maartenballiauw)[#2379](https://nuget.codeplex.com/workitem/2379)
- Akış kimlik bilgilerini kalıcı hale eklerken $metadata sonekini kaldırın.
[Filip De Vos](https://www.codeplex.com/site/users/view/FilipDeVos)
(@foxtricks)[#3538](http://nuget.codeplex.com/workitem/3538)
- nuget.exe update komutu için proje dosyasını belirtme desteği.
[Juan Gonzalez](https://www.codeplex.com/site/users/view/jjgonzalez)
[#3536](http://nuget.codeplex.com/workitem/3536)
- Değiştirme belirteçleri -IncludeReferencedProjects ile geçirilmedi.
[David Poole](https://www.codeplex.com/site/users/view/Sarkie)
(@Sarkie_Dave)[#3677](http://nuget.codeplex.com/workitem/3677)
- Büyük paket gönderimi sırasında outofmemoryException atma nuget.push düzeltildi.
[Wouter Ouwens](https://www.codeplex.com/site/users/view/Despotes)
[#3666](http://nuget.codeplex.com/workitem/3666)
- Proje başka bir CLI/C++ projesine başvurduğunda yanlış hedef yolu düzeltin.
[Adam Ralph](http://www.codeplex.com/site/users/view/adamralph)
(@adamralph)[#3639](https://nuget.codeplex.com/workitem/3639)
- Paketlerin varsayılan olarak geliştirme bağımlılıkları olarak yüklenmesine izin ver
[David Fowler](https://www.codeplex.com/site/users/view/dfowler)
(@davidfowl)[#3717](https://nuget.codeplex.com/workitem/3717)
- En son yama sürümüne örtük yükseltmeleri kaldırma
[Gregory Vandenbrouck](https://www.codeplex.com/site/users/view/vdbg)
- NuGet.Server, nuget.exe yansıtma komutu ve diğerleri için çeşitli hata düzeltmeleri ve geliştirmeleri.
- Gregory'nin 2.8 için master'a entegre olmak için doğru zamanlama üzerinde bizimle birlikte çalışması ile bu çalışma birkaç ay boyunca yapıldı.
Bağımlılıklar için Düzeltme Eki Çözümü
NuGet, paket bağımlılıklarını çözerken geçmişte paket üzerindeki bağımlılıkları karşılayan en düşük ana ve ikincil paket sürümünü seçme stratejisini uygulamıştır. Ancak ana ve ikincil sürümden farklı olarak düzeltme eki sürümü her zaman en yüksek sürüme çözümlenmiştir. Davranış iyi niyetli olsa da, bağımlılıkları olan paketleri yüklemek için determinizm eksikliği yarattı. Aşağıdaki örneği inceleyin:
PackageA@1.0.0 -[ >=1.0.0 ]-> PackageB@1.0.0
Developer1 installs PackageA@1.0.0: installed PackageA@1.0.0 and PackageB@1.0.0
PackageB@1.0.1 is published
Developer2 installs PackageA@1.0.0: installed PackageA@1.0.0 and PackageB@1.0.1
Bu örnekte, Developer1 ve Developer2 PackageA@1.0.0'ı yüklemiş olsa da her biri farklı bir PackageB sürümüyle sonuçlandı. NuGet 2.8, düzeltme eki sürümleri için bağımlılık çözümleme davranışının birincil ve ikincil sürümlerle tutarlı olması için bu varsayılan davranışı değiştirir. Yukarıdaki örnekte PackageB@1.0.0, yeni düzeltme eki sürümüne bakılmaksızın PackageA@1.0.0'ın yüklenmesi sonucu yüklenir.
-DependencyVersion Anahtarı
NuGet 2.8, bağımlılıkları çözümlemek için varsayılan davranışı değiştirse de, paket yöneticisi konsolundaki -DependencyVersion anahtarı aracılığıyla bağımlılık çözümleme işlemi üzerinde daha hassas denetim de ekler. anahtar, bağımlılıkları mümkün olan en düşük sürüme (varsayılan davranış), mümkün olan en yüksek sürüme veya en yüksek ikincil veya düzeltme eki sürümüne çözümlemeye olanak tanır. Bu anahtar yalnızca powershell komutundaki install-package için çalışır.
DependencyVersion Özniteliği
Yukarıda ayrıntıları verilen -DependencyVersion anahtarına ek olarak, -DependencyVersion anahtarı install-package çağrısında belirtilmemişse Nuget.Config dosyasında varsayılan değeri tanımlayan yeni bir öznitelik ayarlayabilmesine de izin verir. Bu değer, herhangi bir yükleme paketi işlemi için NuGet Paket Yöneticisi İletişim Kutusu tarafından da dikkate alınır. Bu değeri ayarlamak için aşağıdaki özniteliği Nuget.Config dosyanıza ekleyin:
<config>
<add key="dependencyversion" value="Highest" />
</config>
-whatif ile NuGet İşlemlerini Önizleme
Bazı NuGet paketlerinin derin bağımlılık grafikleri olabilir ve bu nedenle, önce ne olacağını görmek için yükleme, kaldırma veya güncelleştirme işlemi sırasında yararlı olabilir. NuGet 2.8, komutun uygulanacağı paketlerin tamamının görselleştirilmesini sağlamak için standart PowerShell -whatif anahtarını install-package, uninstall-package ve update-package komutlarına ekler. Örneğin, boş bir ASP.NET Web uygulamasında çalıştırmak install-package Microsoft.AspNet.WebApi -whatif
aşağıdakileri sağlar.
PM> install-package Microsoft.AspNet.WebApi -whatif
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.WebHost (≥ 5.0.0)'.
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.Core (≥ 5.0.0)'.
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.Client (≥ 5.0.0)'.
Attempting to resolve dependency 'Newtonsoft.Json (≥ 4.5.11)'.
Install Newtonsoft.Json 4.5.11
Install Microsoft.AspNet.WebApi.Client 5.0.0
Install Microsoft.AspNet.WebApi.Core 5.0.0
Install Microsoft.AspNet.WebApi.WebHost 5.0.0
Install Microsoft.AspNet.WebApi 5.0.0
Paketi Düşürme
Yeni özellikleri araştırmak ve ardından son kararlı sürüme geri dönmeye karar vermek için paketin yayın öncesi sürümünü yüklemek yaygın bir durum değildir. NuGet 2.8'in öncesinde bu, yayın öncesi paketi ve bağımlılıklarını kaldırıp önceki sürümü yüklemek için çok adımlı bir işlemdi. Ancak NuGet 2.8 ile update-package artık tüm paket kapanışını (örneğin, paketin bağımlılık ağacı) önceki sürüme geri alır.
Geliştirme Bağımlılıkları
Geliştirme sürecini iyileştirmek için kullanılan araçlar dahil olmak üzere birçok farklı özellik türü NuGet paketleri olarak teslim edilebilir. Bu bileşenler, yeni bir paket geliştirmede etkili olsalar da, daha sonra yayımlandığında yeni paketin bağımlılığı olarak kabul edilmemelidir. NuGet 2.8, bir paketin .nuspec
kendisini dosyada developmentDependency olarak tanımlamasını sağlar. Yüklendiğinde, bu meta veriler paketin packages.config
yüklendiği projenin dosyasına da eklenir. Bu packages.config
dosya daha sonra sırasında nuget.exe pack
NuGet bağımlılıkları için analiz edildiğinde, geliştirme bağımlılıkları olarak işaretlenen bağımlılıkları dışlar.
Farklı Platformlar için ayrı packages.config Dosyaları
Birden çok hedef platform için uygulama geliştirirken, ilgili derleme ortamlarının her biri için farklı proje dosyalarının olması yaygın olarak görülür. Paketlerin farklı platformlar için farklı destek düzeyleri olduğundan, farklı proje dosyalarında farklı NuGet paketlerinin tüketilmesi de yaygındır. NuGet 2.8, platforma özgü farklı proje dosyaları için farklı packages.config
dosyalar oluşturarak bu senaryo için geliştirilmiş destek sağlar.
Yerel Önbelleğe Geri Dönüş
NuGet paketleri genellikle ağ bağlantısı kullanılarak NuGet galerisi gibi uzak bir galeriden tüketilse de, istemcinin bağlı olmadığı birçok senaryo vardır. Ağ bağlantısı olmadan, bu paketler yerel NuGet önbelleğindeki istemcinin makinesinde olsa bile NuGet istemcisi paketleri başarıyla yükleyemedi. NuGet 2.8, paket yöneticisi konsoluna otomatik önbellek geri dönüşü ekler. Örneğin, ağ bağdaştırıcısının bağlantısını keserken ve jQuery'yi yüklerken konsol aşağıdakileri gösterir:
PM> Install-Package jquery
The source at nuget.org [https://www.nuget.org/api/v2/] is unreachable. Falling back to NuGet Local Cache at C:\Users\me\AppData\Local\NuGet\Cache
Installing 'jQuery 2.0.3'.
Successfully installed 'jQuery 2.0.3'.
Adding 'jQuery 2.0.3' to WebApplication18.
Successfully added 'jQuery 2.0.3' to WebApplication18.
Önbellek geri dönüş özelliği belirli bir komut bağımsız değişkeni gerektirmez. Ayrıca, önbellek geri dönüşü şu anda yalnızca paket yöneticisi konsolunda çalışır; davranış şu anda paket yöneticisi iletişim kutusunda çalışmaz.
WebMatrix NuGet İstemcisi Güncelleştirmeler
NuGet 2.8 ile birlikte, WebMatrix için NuGet uzantısı da NuGet 2.5 ile sunulan önemli özelliklerin çoğunu içerecek şekilde güncelleştirildi. Yeni özellikler arasında 'Tümünü Güncelleştir', 'En Düşük NuGet Sürümü' gibi özellikler bulunur ve içerik dosyalarının üzerine yazılmasını sağlar.
WebMatrix 3'te NuGet Paket Yöneticisi uzantınızı güncelleştirmek için:
- WebMatrix 3'i açma
- Şeritteki Uzantılar simgesine tıklayın
- Güncelleştirmeler sekmesini seçin
- NuGet Paket Yöneticisi 2.5.0'a güncelleştirmek için tıklayın
- WebMatrix 3'i kapatma ve yeniden başlatma
Bu, NuGet ekibinin WebMatrix için NuGet Paket Yöneticisi uzantısının ilk sürümüdür. Kod kısa süre önce Microsoft tarafından açık kaynak NuGet projesine katkıda bulunmuştur. Daha önce, NuGet tümleştirmesi WebMatrix'e yerleşikti ve WebMatrix'ten bant dışında güncelleştirilemedi. Artık NuGet'in istemci araçlarının geri kalanıyla birlikte daha fazla güncelleştirme özelliğine sahibiz.
Hata Düzeltmeleri
Yapılan en önemli hata düzeltmelerinden biri update-package -reinstall komutundaki performans iyileştirmesiydi.
Bu özelliklere ve yukarıda belirtilen performans düzeltmesine ek olarak, NuGet'in bu sürümü diğer birçok hata düzeltmesini de içerir. Sürümde ele alınan toplam 181 sorun vardı. NuGet 2.8'de sabit olan iş öğelerinin tam listesi için lütfen öğesini [NuGet Issue Tracker for this release](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.8&status=all)
görüntüleyin.