NuGet 2.1 Sürüm Notları
NuGet 2.0 Sürüm Notları | NuGet 2.2 Sürüm Notları
NuGet 2.1, 4 Ekim 2012'de yayımlandı.
NuGet 2.1, dosya aramak için NuGet.Config
klasör yapısında yinelemeli olarak yürüme ve ardından bulunan tüm dosyalar kümesinden yapılandırmayı oluşturma yoluyla NuGet ayarlarını denetleme konusunda daha fazla esneklik sağlar. Örneğin, bir ekibin diğer iç bağımlılıkların CI derlemeleri için bir iç paket deposuna sahip olduğu senaryoyu göz önünde bulundurun. Tek bir projenin klasör yapısı aşağıdaki gibi görünebilir:
C:\
C:\myteam\
C:\myteam\solution1
C:\myteam\solution1\project1
Ayrıca, çözüm için paket geri yükleme etkinleştirildiyse aşağıdaki klasör de bulunur:
C:\myteam\solution1\.nuget
Ekibin üzerinde çalıştığı tüm projeler için ekibin iç paket deposunu kullanılabilir hale getirmek için, makinedeki her proje için kullanılabilir hale getirmemek için yeni bir Nuget.Config dosyası oluşturup c:\myteam klasörüne yerleştirebiliriz. Proje başına bir paket klasörünün özel olarak belirli bir yolu yoktur.
<configuration>
<packageSources>
<add key="Official project team source" value="http://teamserver/api/v2/" />
</packageSources>
<disabledPackageSources />
<activePackageSource>
<add key="Official project team source" value="http://teamserver/api/v2/" />
</activePackageSource>
</configuration>
Artık aşağıda gösterildiği gibi c:\myteam altındaki herhangi bir klasörden 'nuget.exe sources' komutu çalıştırılarak kaynağın eklendiğini görebiliriz:
NuGet.Config
dosyaları şu sırayla aranıyor:
.nuget\Nuget.Config
- Proje klasöründen köke özyinelemeli yürüyüş
- Genel
Nuget.Config
(%appdata%\NuGet\Nuget.Config
)
Yapılandırmalar ters sırada uygulanır; yani yukarıdaki sıralamaya göre önce genel Nuget.Config, ardından kökten proje klasörüne bulunan Nuget.Config dosyaları ve ardından .nuget\Nuget.Config
da uygulanır. Bu, öğesini yapılandırmadan bir dizi öğeyi kaldırmak için kullanıyorsanız <clear/>
özellikle önemlidir.
Geçmişte NuGet, çözüm kök klasörünün altında bulunan bilinen bir 'packages' klasöründen çözümün paketlerini yönetmiştir. NuGet paketlerinin yüklü olduğu birçok farklı çözümü olan geliştirme ekipleri için bu, aynı paketin dosya sistemindeki birçok farklı yere yüklenmesine neden olabilir.
NuGet 2.1, dosyadaki öğesi NuGet.Config
aracılığıyla repositoryPath
packages klasörünün konumu üzerinde daha ayrıntılı denetim sağlar. Hiyerarşik Nuget.Config desteğinin önceki örneğini temel alan C:\myteam\ altındaki tüm projelerin aynı paketler klasörünü paylaşmasını istediğimizi varsayalım. Bunu başarmak için aşağıdaki girdiyi öğesine eklemeniz yeterlidir c:\myteam\Nuget.Config
.
<configuration>
<config>
<add key="repositoryPath" value="C:\myteam\teampackages" />
</config>
...
</configuration>
Bu örnekte, paylaşılan Nuget.Config
dosya C:\myteam altında oluşturulan her proje için derinliğe bakılmaksızın paylaşılan paketler klasörünü belirtir. Çözüm kökünüzün altında mevcut bir packages klasörünüz varsa, NuGet paketleri yeni konuma yerleştirmeden önce bu klasörü silmeniz gerektiğini unutmayın.
Taşınabilir kitaplıklar ilk olarak .NET 4 ile sunulan ve the.NET Framework sürümlerinden Silverlight'a, Windows Telefon ve hatta Xbox 360'a (şu anda NuGet, Xbox taşınabilir kitaplık hedefini desteklemese de) farklı Microsoft platformlarında değişiklik yapmadan çalışabilen derlemeler oluşturmanıza olanak tanıyan bir özelliktir. NuGet 2.1, çerçeve sürümleri ve profilleri için paket kurallarını genişleterek artık bileşik çerçeve ve profil hedef lib
klasörlerine sahip paketler oluşturmanızı sağlayarak taşınabilir kitaplıkları destekliyor.
Örnek olarak, aşağıdaki taşınabilir sınıf kitaplığının kullanılabilir hedef platformlarını göz önünde bulundurun.
Kitaplık oluşturulduktan ve komutu nuget.exe pack MyPortableProject.csproj
çalıştırıldıktan sonra, oluşturulan NuGet paketinin içeriği incelenerek yeni taşınabilir kitaplık paketi klasör yapısı görülebilir.
Gördüğünüz gibi taşınabilir kitaplık klasör adı kuralı, çerçeve tanımlayıcılarının mevcut çerçeve adını ve sürüm kurallarını izlediği 'portable-{framework 1}+{framework n}' desenini izler. Ad ve sürüm kuralları için bir özel durum, Windows Telefon için kullanılan çerçeve tanımlayıcısında bulunur. Bu takma ad 'wp' çerçeve adını (wp7, wp71 veya wp8) kullanmalıdır. Örneğin ,'silverlight-wp7' kullanılması hataya neden olur.
Bu klasör yapısından oluşturulan paketi yüklerken, NuGet artık çerçeve ve profil kurallarını klasör adında belirtildiği gibi birden çok hedefe uygulayabilir. NuGet'in eşleştirme kurallarının arkasında , "daha belirli" hedeflerin "daha az belirli" hedeflerden öncelikli olacağı ilkesi yer alır. Bu, belirli bir platformu hedefleyen takma adlar, her ikisi de bir projeyle uyumluysa taşınabilir olanlar yerine her zaman tercih edilir. Ayrıca, bir projeyle birden çok taşınabilir hedef uyumluysa, NuGet desteklenen platform kümesinin pakete başvuran projeye "en yakın" olduğu hedefi tercih eder.
NuGet 2.1, taşınabilir kitaplık projelerini hedeflemeye yönelik destek eklemenin yanı sıra hem Windows 8 Mağazası hem de Windows Telefon 8 projeleri için yeni çerçeve adlarının yanı sıra ilgili platformların gelecekteki sürümlerinde daha kolay yönetilebilecek Windows Mağazası ve Windows Telefon projeleri için bazı yeni genel adlar sağlar.
Windows 8 Mağazası uygulamaları için tanımlayıcılar aşağıdaki gibi görünür:
NuGet 2.0 ve öncesi | NuGet 2.1 |
---|---|
winRT45, . NETCore45 | Windows, Windows8, win, win8 |
Windows Telefon projeleri için tanımlayıcılar aşağıdaki gibi görünür:
Telefon işletim sistemi | NuGet 2.0 ve öncesi | NuGet 2.1 |
---|---|---|
Windows Telefon 7 | silverlight3-wp | wp, wp7, Windows Telefon, Windows Telefon 7 |
Windows Telefon 7.5 (Mango) | silverlight4-wp71 | wp71, Windows Telefon 71 |
Windows Phone 8 | (desteklenmez) | wp8, Windows Telefon 8 |
Yukarıdaki tüm değişikliklerde, eski çerçeve adları NuGet 2.1 tarafından tam olarak desteklenmeye devam edecektir. Bundan sonra, ilgili platformların gelecek sürümlerinde daha kararlı olacakları için yeni adlar kullanılmalıdır. Ancak yeni adlar NuGet'in 2.1 öncesi sürümlerinde *desteklenmez, bu nedenle değişikliğin ne zaman gerçekleştirileceğini uygun şekilde planlayın.
Son birkaç yinelemede NuGet galerisinde paket aramalarının hızını ve ilgi düzeyini büyük ölçüde geliştiren değişiklikler yapılmıştır. Ancak bu iyileştirmeler nuget.org Web sitesiyle sınırlıydı. NuGet 2.1, gelişmiş arama deneyimini NuGet paket yöneticisi iletişim kutusu aracılığıyla kullanılabilir hale getirir. Örneğin, Windows Azure Önbelleğe Alma Preview paketini bulmak istediğinizi düşünün. Bu paket için makul bir arama sorgusu "Azure Cache" olabilir. Paket yöneticisi iletişim kutusunun önceki sürümlerinde, istenen paket sonuçların ilk sayfasında bile listelenmeyecekti. Ancak, NuGet 2.1'de istenen paket artık arama sonuçlarının en üstünde gösterilir.
NuGet 2.1'in öncesinde NuGet, yüksek bir sürüm numarası olmadığında paketi güncelleştirmeyi atlardı. Bu, özellikle de ekibin her derlemede paket sürüm numarasını artırmak istemediği derleme veya CI senaryolarında belirli senaryolar için sürtüşmeler ortaya çıkarmıştı. İstenen davranış, ne olursa olsun bir güncelleştirmeyi zorlamaktı. NuGet 2.1 bunu 'yeniden yükleme' bayrağıyla giderir. Örneğin, NuGet'in önceki sürümleri, daha yeni bir paket sürümü olmayan bir paketi güncelleştirmeye çalışırken aşağıdakiyle sonuçlanır:
PM> Update-Package Moq
No updates available for 'Moq' in project 'MySolution.MyConsole'.
Yeniden yükleme bayrağıyla, paket daha yeni bir sürüm olup olmadığına bakılmaksızın güncelleştirilir.
PM> Update-Package Moq -Reinstall
Successfully removed 'Moq 4.0.10827' from MySolution.MyConsole.
Successfully uninstalled 'Moq 4.0.10827'.
Successfully installed 'Moq 4.0.10827'.
Successfully added 'Moq 4.0.10827' to MySolution.MyConsole.
Yeniden yükleme bayrağının yararlı olduğu bir diğer senaryo da çerçevenin yeniden hedeflenmesidir. Projenin hedef çerçevesini değiştirirken (örneğin, .NET 4'ten .NET 4.5'e), Update-Package -Reinstall projede yüklü tüm NuGet paketleri için başvuruları doğru derlemelere güncelleştirebilir.
NuGet'in önceki sürümlerinde, Visual Studio seçenekleri iletişim kutusunun içinden bir paket kaynağını güncelleştirmek için paket kaynağının silinmesi ve yeniden eklenmesi gerekiyordu. NuGet 2.1, yapılandırma kullanıcı arabiriminin birinci sınıf işlevi olarak güncelleştirmeyi destekleyerek bu iş akışını geliştirir.
NuGet 2.1 birçok hata düzeltmesi içerir. NuGet 2.0'da sabit olan iş öğelerinin tam listesi için lütfen öğesini [NuGet Issue Tracker for this release](http://nuget.codeplex.com/workitem/list/advanced?keyword=&status=Fixed&type=All&priority=All&release=NuGet%202.1&assignedTo=All&component=All&sortField=LastUpdatedDate&sortDirection=Descending&page=0)
görüntüleyin.