Aracılığıyla paylaş


NuGet 2.5 Sürüm Notları

NuGet 2.2.1 Sürüm Notları | NuGet 2.6 Sürüm Notları

NuGet 2.5, 25 Nisan 2013'te yayımlandı. Bu sürüm çok büyük, 2.3 ve 2.4 sürümlerini atlamak zorunda hissettik! Bugüne kadar NuGet için sahip olduğumuz en büyük sürümdür ve bu sürümde [160 work items](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.5&status=all)'dan fazla içerik bulunmaktadır.

Teşekkür

Aşağıdaki dış katkıda bulunanlara NuGet 2.5'e yaptıkları önemli katkılardan dolayı teşekkür ederiz:

  1. [Daniel Plaisted](https://www.codeplex.com/site/users/view/dsplaisted) (@dsplaisted)
    • [#2847](https://nuget.codeplex.com/workitem/2847) - Bilinen hedef çerçeve tanımlayıcıları listesine MonoAndroid, MonoTouch ve MonoMac ekleyin.
  2. [Andres G. Aragoneses](https://www.codeplex.com/site/users/view/knocte) (@knocte)
    • [#2865](https://nuget.codeplex.com/workitem/2865) - Büyük/küçük harf duyarlılığı olan işletim sistemi için NuGet.targets yazımını düzeltme
  3. [David Fowler](https://www.codeplex.com/site/users/view/dfowler) (@davidfowl)
    • Çözümü Mono üzerinde inşa edin.
  4. [Andrew Theken](https://www.codeplex.com/site/users/view/atheken) (@atheken)
    • Mono'da başarısız olan birim testlerini düzeltin.
  5. [Olivier Dagenais](https://www.codeplex.com/site/users/view/OliIsCool) (@OliIsCool)
    • [#2920](https://nuget.codeplex.com/workitem/2920) - nuget.exe pack komutu Özellikleri MSBuild'e aktarmıyor
  6. [Miroslav Bajtos](https://www.codeplex.com/site/users/view/MiroslavBajtos) (@bajtos)
    • [#1511](https://nuget.codeplex.com/workitem/1511) - Biçimlendirmeyi korumak için değiştirilmiş XML işleme kodu.
  7. [Adam Ralph](http://www.codeplex.com/site/users/view/adamralph) (@adamralph)
    • build.cmd başarılı olmasını sağlamak için özel sözlüğe tanınan sözcükler eklendi.
  8. [Bruno Roggeri](https://www.codeplex.com/site/users/view/broggeri)
    • Yerelleştirilmiş VS'de çalışırken birim testlerini düzeltin.
  9. [Gareth Evans](https://www.codeplex.com/site/users/view/garethevans)
    • PackageService'ten ayıklanan arabirim
  10. [Maxime Brugidou](https://www.codeplex.com/site/users/view/brugidou) (@brugidou)
    • [#936](https://nuget.codeplex.com/workitem/936) - Paketleme sırasında proje bağımlılıklarını işleme
  11. [Xavier Decoster](https://www.codeplex.com/site/users/view/XavierDecoster) (@XavierDecoster)
    • [#2991](https://nuget.codeplex.com/workitem/2991), [#3164](https://nuget.codeplex.com/workitem/3164) - Nuget.cofig dosyalarında paket kaynağı kimlik bilgilerini depolarken Metin Parolasını Temizle desteği
  12. [James Manning](http://www.codeplex.com/site/users/view/jmanning) (@manningj)
    • [#3190](http://nuget.codeplex.com/workitem/3190), [#3191](https://nuget.codeplex.com/workitem/3191) - Get-Package yardım açıklamasını düzeltin

NuGet 2.5 Beta/RC ile son sürümden önce onaylanan ve düzeltilen hataları buldukları için de aşağıdaki kişilere teşekkür ederiz:

  1. [Tony Wall](https://www.codeplex.com/site/users/view/CodeChief) (@CodeChief)
    • [#3200](https://nuget.codeplex.com/workitem/3200) - MSTest, en son NuGet 2.4 ve 2.5 derlemeleriyle bozuk

Sürümdeki önemli özellikler

Kullanıcıların zaten var olan içerik dosyalarının üzerine yazmasına izin ver

Tüm zamanların en çok istenen özelliklerinden biri, NuGet paketine eklendiğinde diskte zaten var olan içerik dosyalarının üzerine yazabilme özelliğidir. NuGet 2.5'den başlayarak, bu çakışmalar tanımlanır ve dosyaların üzerine yazmanız istenirken, daha önce bu dosyalar her zaman atlanırdı.

İçerik dosyalarının üzerine yazma

'nuget.exe update' ve 'Install-Package' artık komut satırı senaryoları için bazı varsayılan ayarları yapmak üzere yeni bir '-FileConflictAction' seçeneğine sahip.

Hedef projede paketten bir dosya zaten varsa, varsayılan eylemi ayarlayın. Her zaman dosyaların üzerine yazmak için 'Üzerine yaz' olarak ayarlayın. Dosyaları atlamak için 'Yoksay' olarak ayarlayın. Belirtilmezse, çakışan her dosyayı ister.

MSBuild hedeflerinin ve props dosyalarının otomatik içeri aktarılması

NuGet paketinin en üst düzeyinde yeni bir geleneksel klasör oluşturuldu. \lib, \content ve \tools eşdeğeri olarak, paketinize artık bir \build klasör ekleyebilirsiniz. Bu klasörün altında, sabit adlara {packageid}.targets sahip iki dosya veya {packageid}.propsyerleştirebilirsiniz. Bu iki dosya, doğrudan build altında veya diğer klasörler gibi çerçeveye özgü klasörlerin altında olabilir. En iyi eşleşen çerçeve klasörünü seçme kuralı, bunlardakiyle tam olarak aynıdır.

NuGet \build dosyaları içeren bir paket yüklediğinde, proje dosyasına <Import>, .targets ve .props dosyalarını işaret eden bir MSBuild öğesi ekler. Dosya .props üste eklenirken, dosya .targets alta eklenir.

<References/> öğesini kullanarak her platform için farklı referanslar belirtin

2.5'ten önce, .nuspec dosyasında kullanıcı yalnızca tüm çerçeveler için eklenmek üzere başvuru dosyalarını belirtebiliyordu. Artık 2.5 sürümündeki bu yeni özellik sayesinde kullanıcı desteklenen platformların her biri için öğesini yazabilir <reference/> , örneğin:

<references>
    <group targetFramework="net45">
        <reference file="a.dll" />
    </group>
    <group targetFramework="netcore45">
        <reference file="b.dll" />
    </group>
    <group>
        <reference file="c.dll" />
    </group>
</references>

NuGet'in .nuspec dosyasına göre projelere nasıl başvurular eklediğine ilişkin akış aşağıdadır:

  1. lib Hedef çerçeve için uygun klasörü bulun ve bu klasörden derlemelerin listesini alın
  2. Hedef çerçeve için uygun referans grubunu ayrı ayrı bulun ve bu gruptan derlemelerin listesini alın. Hedef çerçeve belirtilmemiş başvuru grubu geri dönüş grubudur.
  3. İki listenin kesişimini bulun ve bunu eklemek için başvuru olarak kullanın

Bu yeni özellik, paket yazarlarının farklı çerçevelere derleme alt kümeleri uygulamak için Başvurular özelliğini kullanmasına olanak tanır; aksi takdirde yinelenen derlemeleri birden çok lib klasöre taşımaları gerekecektir.

Not: Bu özelliği kullanmak için şu anda nuget.exe paketini kullanmanız gerekir; NuGet Paket Gezgini henüz desteklemiyor.

Tüm paketlerin aynı anda güncelleştirilmesini sağlamak için Tümünü Güncelleştir düğmesi

Birçoğunuz tüm paketlerinizi güncelleştirmek için "Update-Package" PowerShell cmdlet'ini biliyorsunuz; artık bunu kullanıcı arabirimi aracılığıyla da gerçekleştirmenin kolay bir yolu vardır.

Bu özelliği denemek için:

  1. Yeni ASP.NET MVC uygulaması oluşturma
  2. 'NuGet Paketlerini Yönet' iletişim kutusunu başlatın
  3. 'Güncelleştirmeler' seçeneğini belirleyin
  4. 'Tümünü Güncelleştir' düğmesine tıklayın

İletişim kutusundaki Tümünü Güncelleştir düğmesi

nuget.exe Paketi için geliştirilmiş proje başvurusu desteği

Şimdi nuget.exe pack komutu, başvuruda bulunan projeleri aşağıdaki kurallarla işler:

  1. Başvurulan projenin karşılık gelen .nuspec dosyası varsa ( örneğin, ile aynı klasörde proj1.nuspecadlı proj1.csproj bir dosya varsa) bu proje, dosyadan .nuspec okunan kimlik ve sürüm kullanılarak pakete bağımlılık olarak eklenir.
  2. Aksi takdirde, başvuruda bulunan projenin dosyaları pakette paketlenir. Bu nedenle, bu proje tarafından başvuruda bulunulan projeler aynı kurallar kullanılarak özyinelemeli olarak işlenir.
  3. Tüm DLL, .pdbve .exe dosyaları eklenir.
  4. Diğer tüm içerik dosyaları eklenir.
  5. Tüm bağımlılıklar birleştirilir.

Referans verilen bir proje, bir .nuspec dosyası varsa bağımlılık olarak ele alınmasını sağlar, aksi takdirde paketin bir parçası haline gelir.

Burada daha fazla ayrıntı bulabilirsiniz: [http://nuget.codeplex.com/workitem/936](http://nuget.codeplex.com/workitem/936)

Paketlere 'En Düşük NuGet Sürümü' özelliği ekleme

'minClientVersion' adlı yeni bir meta veri özniteliği artık bir paketi kullanmak için gereken en düşük NuGet istemci sürümünü gösterebilir.

Bu özellik, paket yazarının bir paketin yalnızca nuGet'in belirli bir sürümünden sonra çalışacağını belirtmesine yardımcı olur. NuGet 2.5'in ardından yeni .nuspec özellikler eklendikçe paketler en düşük NuGet sürümünü talep edebilecektir.

<metadata minClientVersion="2.6">

Kullanıcı NuGet 2.5 yüklüyse ve bir paket 2.6'yı gerekli olarak tanımlanıyorsa, kullanıcıya paketin yüklenemeyeceklerini belirten görsel ipuçları verilir. Daha sonra kullanıcıya NuGet sürümünü güncelleştirmesi için yol gösterilir.

Bu, paketlerin yüklenmeye başlayıp, tanınmayan bir şema sürümü nedeniyle başarısız olduğu mevcut deneyimi iyileştirecektir.

Paket yüklemesi sırasında bağımlılıklar artık gereksiz yere güncelleştirilmemektedir

NuGet 2.5'in öncesinde, projede zaten yüklü olan bir pakete bağımlı olan bir paket yüklendiğinde, var olan sürüm bağımlılığı karşılasa bile bağımlılık yeni yüklemenin bir parçası olarak güncelleştirilir.

NuGet 2.5'den başlayarak, bir bağımlılık sürümü zaten karşılanmışsa, diğer paket yüklemeleri sırasında bağımlılık güncelleştirilmez.

Senaryo:

  1. Kaynak depo, sürüm 1.0.0 ve 1.0.2 ile B paketini içerir. Ayrıca B (>= 1.0.0) bağımlılığı olan A paketini içerir.
  2. Geçerli projede zaten B sürüm 1.0.0 paketinin yüklü olduğunu varsayalım. Şimdi A paketini yüklemek istiyorsunuz.

NuGet 2.2 ve üzeri sürümlerde:

  • A paketini yüklerken, mevcut sürüm 1.0.0 bağımlılık sürümü kısıtlamasını (= 1.0.0) karşılasa bile NuGet B'yi >1.0.2'ye otomatik olarak güncelleştirir.

NuGet 2.5 ve daha yeni sürümlerde:

  • Mevcut sürüm 1.0.0'ın bağımlılık sürümü kısıtlamasını karşıladığını algıladığı için NuGet artık B'yi güncelleştirmez.

Bu değişiklikle ilgili daha fazla arka plan bilgisi için, hem ayrıntılı [work item](https://nuget.codeplex.com/workitem/1681) hem de ilgili [discussion thread](https://nuget.codeplex.com/discussions/436712)bölümünü okuyun.

nuget.exe ayrıntılı ayrıntı düzeyine sahip http isteklerinin çıkışını sağlar

nuget.exe sorunlarını gideriyorsanız veya yalnızca işlemler sırasında hangi HTTP isteklerinin yapıldığını merak ediyorsanız, '-verbosity detailed' anahtarı artık yapılan tüm HTTP isteklerinin çıkışını oluşturur.

nuget.exe'den HTTP çıkışı

nuget.exe gönderme artık UNC ve klasör kaynaklarını destekliyor

NuGet 2.5'in öncesinde, UNC yolunu veya yerel klasörü temel alan bir paket kaynağına 'nuget.exe gönderme' çalıştırmayı denediğinizde gönderim başarısız olur. Yakın zamanda eklenen hiyerarşik yapılandırma özelliğiyle, nuget.exe unc/klasör kaynağını veya HTTP tabanlı nuget galerisini hedeflemesi yaygın hale gelmişti.

NuGet 2.5'den başlayarak, nuget.exe bir UNC/klasör kaynağı tanımlarsa, dosya kopyasını kaynağa gerçekleştirir.

Aşağıdaki komut şimdi çalışır:

nuget push -source \\mycompany\repo\ mypackage.1.0.0.nupkg

nuget.exe açıkça belirtilen Yapılandırma dosyalarını destekler

Yapılandırmaya erişen nuget.exe komutları ('spec' ve 'pack' hariç) artık yeni bir '-ConfigFile' seçeneğini destekliyor ve bu seçenek, %AppData%\nuget\Nuget.Config konumundaki varsayılan yapılandırma dosyasının yerine belirli bir yapılandırma dosyasının kullanılmasını zorlar.

Örnek:

nuget sources add -name test -source http://test -ConfigFile C:\test\.nuget\Nuget.Config

Yerel projeler için destek

NuGet 2.5 ile NuGet araçları artık Visual Studio'daki Yerel projeler için kullanılabilir. Çoğu yerel paketin CoApp projesi tarafından oluşturulan bir aracı kullanarak yukarıdaki MSBuild içeri aktarma özelliğini kullanmasını bekliyoruz. Daha fazla bilgi için coapp.org web sitesindeki araç hakkındaki ayrıntıları okuyun.

Paket yerel bir projeye yüklendiğinde \build, \content ve \tools içindeki dosyaları dahil etmek üzere paketler için "yerel" hedef çerçeve adı tanıtılır. 'lib' klasörü yerel projeler için kullanılmaz.