Aracılığıyla paylaş


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

Teşekkür

  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) - Feed kimlik bilgilerini kalıcı hale getirirken $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 birlikte aktarılmadı.
  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 hatası vermesini düzelten nuget.push.
  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 Yama Çö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 Seçeneği

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 Değiştirme

DependencyVersion Özniteliği

Yukarıda ayrıntıları verilen -DependencyVersion anahtarına ek olarak, -DependencyVersion anahtarı install-package çağrısında belirtilmezse Nuget.Config dosyasında varsayılan değeri tanımlayan yeni bir öznitelik ayarlayabilme olanağına da 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 kendisini .nuspec dosyasında developmentDependency olarak tanımlamasına olanak tanır. Yüklendiğinde, bu meta veriler paketin packages.config yüklendiği projenin dosyasına da eklenir. packages.config dosyası daha sonra nuget.exe pack sırasında 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 İçin Bireysel 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.

Birden çok package.config dosyası

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 İstemci Güncelleştirmeleri

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öneticisini 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 ö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 düzeltilen iş maddelerinin tam listesi için lütfen [NuGet Issue Tracker for this release](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.8&status=all)'yi görüntüleyin.