İngilizce dilinde oku

Aracılığıyla paylaş


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

Hiyerarşik Nuget.Config

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:

Package sources from parent nuget config

NuGet.Config dosyaları şu sırayla aranıyor:

  1. .nuget\Nuget.Config
  2. Proje klasöründen köke özyinelemeli yürüyüş
  3. 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.Configda uygulanır. Bu, öğesini yapılandırmadan bir dizi öğeyi kaldırmak için kullanıyorsanız <clear/> özellikle önemlidir.

'packages' Klasör Konumunu Belirtin

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ık desteği

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.

Portable library creation dialog

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.

Portable library package layout

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.

Windows 8 ve Windows Telefon 8 Projelerini Hedefleme

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.

Paket Yöneticisi İletişim Kutusunda Geliştirilmiş Arama

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.

Package manager dialog search

Paket Güncelleştirmesini Zorla

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.

Visual Studio İçinde Paket Kaynaklarını Düzenleme

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.

Package manager configuration dialog

Hata Düzeltmeleri

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.