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

  1. [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.
  2. [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.
  3. [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.
  4. [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.
  5. [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.
  6. [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.
  7. [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
  8. [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
  9. [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 Switch

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 packNuGet 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.

Multiple package.config files

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:

  1. WebMatrix 3'i açma
  2. Şeritteki Uzantılar simgesine tıklayın
  3. Güncelleştirmeler sekmesini seçin
  4. NuGet Paket Yöneticisi 2.5.0'a güncelleştirmek için tıklayın
  5. 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.