İngilizce dilinde oku

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 bu, NuGet için sahip olduğumuz en büyük sürümdür ve bu sürümde sona ermiştir [160 work items](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.5&status=all) .

Bildirimler

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 harfe duyarlı işletim sistemi için yazım hatalarını NuGet.targets düzeltme
  3. [David Fowler](https://www.codeplex.com/site/users/view/dfowler) (@davidfowl)
    • Çözümü Mono üzerinde derleyin.
  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 paketi komutu Özellikleri MSBuild'e yaymı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üzeltme

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

Overwrite content files

'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. , ve eşleri \libolarak artık paketinize bir \build klasör ekleyebilirsiniz.\tools\content Bu klasörün altında, sabit adlara {packageid}.targets sahip iki dosya veya {packageid}.propsyerleştirebilirsiniz. Bu iki dosya, diğer klasörler gibi doğrudan çerçeveye özgü klasörlerin altında build veya 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 ve .props dosyalarını işaret eden .targets bir MSBuild <Import> öğesi ekler. Dosya .props en üste eklenirken .targets , dosya alta eklenir.

öğesini kullanarak <References/> platform başına farklı başvurular belirtme

2.5'in .nuspec öncesinde, kullanıcı yalnızca tüm çerçeveler için eklenecek başvuru dosyalarını belirtebilir. 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 dosyaya göre projelere nasıl başvuru eklediğine ilişkin akış aşağıdadır .nuspec :

  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 başvuru grubunu ayrı olarak 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

Update All button in the dialog

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.csprojadlı proj1.nuspec 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. Daha sonra bu proje tarafından başvuruda bulunılan projeler özyinelemeli olarak sames kuralları kullanılarak 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.

Bu, başvuruda bulunılan bir projenin bir dosya varsa bağımlılık olarak değerlendirilmesini sağlar, aksi takdirde paketin bir .nuspec parçası olur.

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şladığı ancak tanınmayan bir şema sürümünün tanımlandığını gösteren başarısız olduğu mevcut deneyimde iyileştirilir.

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.

HTTP output from nuget.exe

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.