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)
.
Aşağıdaki dış katkıda bulunanlara NuGet 2.5'e yaptıkları önemli katkılardan dolayı teşekkür ederiz:
[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.
[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
[David Fowler](https://www.codeplex.com/site/users/view/dfowler)
(@davidfowl)- Çözümü Mono üzerinde derleyin.
[Andrew Theken](https://www.codeplex.com/site/users/view/atheken)
(@atheken)- Mono'da başarısız olan birim testlerini düzeltin.
[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
[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.
[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.
[Bruno Roggeri](https://www.codeplex.com/site/users/view/broggeri)
- Yerelleştirilmiş VS'de çalışırken birim testlerini düzeltin.
[Gareth Evans](https://www.codeplex.com/site/users/view/garethevans)
- PackageService'ten ayıklanan arabirim
[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
[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
[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:
[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
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ı.
'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.
NuGet paketinin en üst düzeyinde yeni bir geleneksel klasör oluşturuldu. , ve eşleri \lib
olarak 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}.props
yerleş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.
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
:
lib
Hedef çerçeve için uygun klasörü bulun ve bu klasörden derlemelerin listesini alın- 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.
- İ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.
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:
- Yeni ASP.NET MVC uygulaması oluşturma
- 'NuGet Paketlerini Yönet' iletişim kutusunu başlatın
- 'Güncelleştirmeler' seçeneğini belirleyin
- 'Tümünü Güncelleştir' düğmesine tıklayın
Şimdi nuget.exe pack komutu, başvuruda bulunan projeleri aşağıdaki kurallarla işler:
- Başvurulan projenin karşılık gelen
.nuspec
dosyası varsa ( örneğin, ile aynı klasördeproj1.csproj
adlıproj1.nuspec
bir dosya varsa) bu proje, dosyadan.nuspec
okunan kimlik ve sürüm kullanılarak pakete bağımlılık olarak eklenir. - 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.
- Tüm DLL,
.pdb
ve.exe
dosyaları eklenir. - Diğer tüm içerik dosyaları eklenir.
- 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)
'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.
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:
- 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.
- 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 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 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
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
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.