İngilizce dilinde oku

Aracılığıyla paylaş


NuGet 2.7 Sürüm Notları

WebMatrix için NuGet 2.6.1 Sürüm Notları | NuGet 2.7.1 Sürüm Notları

NuGet 2.7, 22 Ağustos 2013'te yayımlandı.

Bildirimler

Aşağıdaki dış katkıda bulunanlara NuGet 2.7'ye yaptıkları önemli katkılar için teşekkür ederiz:

  1. [Mike Roth](http://www.codeplex.com/site/users/view/mxrss) (@mxrss)
    • Paketleri listelerken Lisans URL'sini göster ve ayrıntı ayrıntılarıyla anlatılır.
  2. [Adam Ralph](http://www.codeplex.com/site/users/view/adamralph) (@adamralph)
    • [#1956](http://nuget.codeplex.com/workitem/1956) - 'a packages.config developmentDependency özniteliği ekleyin ve bunu yalnızca çalışma zamanı paketlerini eklemek için pack komutunda kullanın
  3. [Rafael Nicoletti](http://www.codeplex.com/site/users/view/tkrafael) (@tkrafael)
    • nuget.exe pack komutunda yinelenen Özellikler anahtarından kaçının.
  4. [Ben Phegan](http://www.codeplex.com/site/users/view/benphegan) (@BenPhegan)
    • [#2610](http://nuget.codeplex.com/workitem/2610) - Makine önbelleği boyutunu 200'e yükseltin.
  5. [Slava Trenogin](http://www.codeplex.com/site/users/view/derigel) (@derigel)
    • [#3217](http://nuget.codeplex.com/workitem/3217) - Yanlış sekmede güncelleştirmeleri gösteren NuGet iletişim kutusunu düzeltin
    • ProjectManager'da Project.TargetFramework null olabilir düzeltme
    • [#3248](http://nuget.codeplex.com/workitem/3248) - SharedPackageRepository FindPackage/FindPackagesById'nin mevcut olmayan packageId'de başarısız olmasını düzeltme
  6. [Kevin Boyle](http://www.codeplex.com/site/users/view/KevinBoyleRG) (@kevfromireland)
    • [#3234](http://nuget.codeplex.com/workitem/3234) - Nomad projesi desteğini etkinleştirme
  7. [Corin Blaikie](http://www.codeplex.com/site/users/view/corinblaikie) (@corinblaikie)
    • [#3252](http://nuget.codeplex.com/workitem/3252) - Dosya mevcut olmadığında 0 çıkış koduyla anında iletme komutunun başarısız olduğunu düzeltin.
  8. [Martin Veselý](http://www.codeplex.com/site/users/view/veselkamartin)
    • [#3226](http://nuget.codeplex.com/workitem/3226) - Bir proje bir veritabanı projesine başvurduğunda Add-BindingRedirect komutuyla ilgili hatayı düzeltin.
  9. [Miroslav Bajtos](http://www.codeplex.com/site/users/view/miroslavbajtos) (@bajtos)
    • [#2891](http://nuget.codeplex.com/workitem/2891) - 'exclude' özniteliğindeki nuget.pack ayrıştırma joker karakteri hatası yanlış düzeltildi.
  10. [Justin Dearing](http://www.codeplex.com/site/users/view/zippy1981) (@zippy1981)
    • [#3307](http://nuget.codeplex.com/workitem/3307) - Düzeltme hatası NuGet.targets paketleri geri yüklerken nuget.exe $(Platform) geçirmiyor.
  11. [Brian Federici](http://www.codeplex.com/site/users/view/benerdin)
    • [#3294](http://nuget.codeplex.com/workitem/3294) - Nuget.exe paket komutunda, aynı ada ancak farklı büyük/küçük harfe sahip dosyaların eklenmesine izin veren ve sonunda "Öğe zaten var" özel durumu oluşturacak olan hatayı düzeltin.
  12. [Daniel Cazzulino](http://www.codeplex.com/site/users/view/dcazzulino) (@kzu)
    • [#2990](http://nuget.codeplex.com/workitem/2990) - NetPortableProfile sınıfına Version özelliği ekleyin.
  13. [David Simner](https://www.codeplex.com/site/users/view/DavidSimner)
    • [#3460](https://nuget.codeplex.com/workitem/3460) - RequireApiKey = true, ancak X-NUGET-APIKEY üst bilgisi yoksa NullReferenceException hatasını düzeltin
  14. [Michael Friis](https://www.codeplex.com/site/users/view/friism) (@friism)
    • [#3278](https://nuget.codeplex.com/workitem/3278) - MonoDevelop'ta düzgün çalışması için NuGet.Build targets dosyasını düzeltir
  15. [Pranav Krishnamoorthy](https://www.codeplex.com/site/users/view/pranavkm) (@pranav_km)
    • Paralelleştirmeyi artırarak Geri Yükleme komut performansını geliştirme

Sürümdeki önemli özellikler

NuGet 2.7, paket geri yükleme için yeni bir yaklaşım sunar ve ayrıca büyük bir engelin üstesinden gelir: Paket geri yükleme onayı artık varsayılan olarak açıktır! Yeni yaklaşımın ve örtük onayın birleşimi, paket geri yükleme senaryolarını önemli ölçüde basitleştirecektir.

NuGet sürüm 2.0, 2.1, 2.2, 2.5 ve 2.6 ile kullanıcıların derleme sırasında NuGet'in eksik paketleri indirmesine açıkça izin vermeleri gerekiyordu. Bu onay açıkça verilmemişse, kullanıcı onay verene kadar paket geri yüklemeyi etkinleştirmiş olan çözümler derlenemedi.

NuGet 2.7'den başlayarak, visual studio'daki NuGet ayarlarındaki onay kutusunu kullanarak kullanıcıların istenirse paket geri yüklemesini açıkça geri çevirmesine izin verirken, paket geri yükleme onayı varsayılan olarak AÇIK olur. Bu örtük onay değişikliği, aşağıdaki ortamlardaKi NuGet'i etkiler:

  • Visual Studio 2013 Preview
  • Visual Studio 2012
  • Visual Studio 2010
  • nuget.exe Komut Satırı Yardımcı Programı

Visual Studio'da Otomatik Paket Geri Yükleme

NuGet 2.7'den başlayarak, çözüm için paket geri yükleme açıkça etkinleştirilmemiş olsa bile NuGet, Visual Studio'da derleme sırasında eksik paketleri otomatik olarak indirir. Bu Otomatik Paket Geri Yükleme, bir proje veya çözüm oluşturduğunuzda ancak MSBuild çağrılmadan önce Visual Studio'da gerçekleşir. Bu, birkaç önemli avantaj sağlar:

  1. Çözümünüzde "NuGet Paketi Geri Yüklemesini Etkinleştir" hareketini kullanmanıza gerek yok
  2. Projelerin değiştirilmesi gerekmez ve NuGet paket geri yüklemenin etkinleştirildiğinden emin olmak için projenizde değişiklik yapmaz
  3. Props/targets dosyaları için MSBuild içeri aktarmalarını içerenler de dahil olmak üzere tüm NuGet paketleri, MSBuild çağrılmadan önce geri yüklenecek ve bu props/hedeflerin derleme sırasında düzgün bir şekilde tanınması sağlanacaktır

Visual Studio'da Otomatik Paket Geri Yükleme'yi kullanmak için yalnızca bir (içinde) eylem gerçekleştirmeniz yeterlidir:

  1. Klasörünüzü packages iade etmeyin

Kaynak denetiminden klasörünüzü atlamanın packages birkaç yolu vardır. Daha fazla bilgi için Paketler ve Kaynak Denetimi konusuna bakın.

Tüm kullanıcılar otomatik paket geri yükleme iznini örtük olarak kabul etse de, Visual Studio'daki Paket Yöneticisi ayarlarını kolayca geri çevirebilirsiniz.

Package Manager Settings

Komut Satırından Basitleştirilmiş Paket Geri Yükleme

NuGet 2.7, nuget.exe için yeni bir özellik tanıtır: nuget.exe restore

Bu yeni Geri Yükle komutu, bir çözüm dosyasını veya klasörünü bağımsız değişken olarak kabul ederek tek bir komutla bir çözüm için tüm paketleri kolayca geri yüklemenize olanak tanır. Ayrıca, geçerli klasörde yalnızca tek bir çözüm olduğunda bu bağımsız değişken gösterilir. Bu, aşağıdakilerin tümünün tek bir çözüm dosyası (MySolution.sln) içeren bir klasörden çalıştığı anlamına gelir:

  1. nuget.exe geri yükleme MySolution.sln
  2. nuget.exe geri yükleyin.
  3. nuget.exe geri yükleme

Geri Yükle komutu çözüm dosyasını açar ve çözümdeki tüm projeleri bulur. Buradan, projelerin packages.config her biri için dosyaları bulur ve bulunan tüm paketleri geri yükler. Ayrıca dosyada .nuget\packages.config bulunan çözüm düzeyinde paketleri de geri yükler. Yeni Geri Yükleme komutu hakkında daha fazla bilgiyi Komut Satırı Başvurusu'nda bulabilirsiniz.

Yeni Paket Geri Yükleme İş Akışı

Paket Geri Yükleme'de yapılan bu değişiklikler, yeni bir iş akışına neden olduğu için heyecanlıyız. Paketlerinizi kaynak denetiminden atlamak istiyorsanız klasörü işlemezsiniz packages . Çözümü açıp oluşturan Visual Studio kullanıcıları paketlerin otomatik olarak geri yüklenip yüklenmediğini görür. Komut satırı derlemeleri için çağırmadan msbuildönce komutunu çağırmanız nuget.exe restore yeterlidir. Artık çözümünüzde "NuGet Paketi Geri Yüklemesini Etkinleştir" hareketini kullanmayı hatırlamanız gerekmez ve artık derlemeyi değiştirmek için projelerinizi değiştirmemiz gerekmez. Ayrıca bu, MSBuild içeri aktarmalarını içeren paketler için, özellikle NuGet'in \build klasöründen props/targets dosyalarını otomatik olarak içeri aktarmaya yönelik son özelliği aracılığıyla eklenen içeri aktarmalar için çok daha iyi bir deneyim sunar.

Kendi yaptığımız çalışmalara ek olarak, bazı önemli iş ortaklarıyla da bu yeni yaklaşımı ortaya çıkarmak için çalışıyoruz. Henüz bunların hiçbiri için somut zaman çizelgelerimiz yok, ancak her ortak yeni yaklaşımla ilgili olduğumuz kadar heyecanlı.

  • Team Foundation Hizmeti - Çağrısının varsayılan derleme senaryolarıyla tümleştirilmesi için nuget.exe restore çalışmaktadır.
  • Windows Azure Web Siteleri - Projenizi Azure'a göndermenize ve nuget.exe restore web sitenizi oluşturmadan önce aramanıza olanak sağlamak için çalışır.
  • TeamCity - TeamCity 8.x için NuGet Yükleyici eklentilerini güncelleştiriyorlar
  • AppHarbor - Deponuzu AppHarbor'a göndermenize ve nuget.exe restore çözümünüz derilmeden önce aramanıza olanak sağlamak için çalışıyorlar.

Yukarıdaki iş ortaklarının her biri kendi nuget.exe kopyasını kullanır ve çözümünüzde nuget.exe taşımanız gerekmez.

Bilinen Sorunlar

İlk 2.7 sürümüyle nuget.exe geri yüklemeyle ilgili bilinen iki sorun vardı, ancak bunlar 6/9/2013 tarihinde NuGet.CommandLine paketine yapılan güncelleştirmeyle düzeltildi. Bu güncelleştirme CodePlex'te [NuGet 2.7 download page](https://nuget.codeplex.com/releases/view/107605) de kullanılabilir. Çalıştırma nuget.exe update -self , en son sürüme güncelleştirilir.

Düzeltilenler:

  1. [New package restore doesn't work on Mono when using SLN file](https://nuget.codeplex.com/workitem/3596)
  2. [New package restore doesn't work with Wix projects](https://nuget.codeplex.com/workitem/3598)

Yeni paket geri yükleme iş akışında da bilinen bir sorun vardır.[Automatic Package Restore does not work for projects under a solution folder](https://nuget.codeplex.com/workitem/3625) Bu sorun NuGet 2.7.1'de düzeltildi.

Proje Yeniden Hedefleme ve Yükseltme Derleme Hataları/Uyarıları

Projenizi yeniden hedefledikten veya yükselttikten sonra birçok kez bazı NuGet paketlerinin düzgün çalışmadığını fark edersiniz. Ne yazık ki, bunun hiçbir göstergesi yoktur ve ardından nasıl ele alındığını gösteren bir kılavuz yoktur. NuGet 2.7 ile artık bazı Visual Studio olaylarını kullanarak projenizi ne zaman yeniden hedeflediğiniz veya yükselttiğinizi yüklü NuGet paketlerinizi etkileyecek şekilde algılıyoruz.

Paketlerinizden herhangi birinin yeniden hedefleme veya yükseltmeden etkilendiğini algılarsak, size bildirmek için anında derleme hataları oluştururuz. Anında derleme hatasına ek olarak, yeniden hedeflemeden etkilenen tüm paketler için dosyanızda packages.config bir requireReinstallation="true" bayrak da kalıcı hale getirmekteyiz ve Visual Studio'daki sonraki her derleme bu paketler için derleme uyarıları oluşturacaktır.

NuGet, etkilenen paketleri yeniden yüklemek için otomatik işlem gerçekleştiremese de, bu gösterge ve uyarının paketleri ne zaman yeniden yüklemeniz gerektiğini keşfetmenize yardımcı olacağını umuyoruz. Bu hata iletilerinin sizi yönlendirdiğini paket yeniden yükleme kılavuzu belgeleri üzerinde de çalışıyoruz.

NuGet Yapılandırma Varsayılanları

Birçok şirket NuGet'i şirket içinde kullanıyor, ancak geliştiricilerine nuget.org yerine iç paket kaynaklarını kullanmaları için yol göstermekte zorlanıyor. NuGet 2.7, aşağıdakiler için makine genelinde varsayılan değerlerin belirtilmesine olanak tanıyan bir Yapılandırma Varsayılanları özelliği sağlar:

  1. Etkin paket kaynakları
  2. Kayıtlı ama devre dışı bırakılmış paket kaynakları
  3. Varsayılan nuget.exe gönderme kaynağı

Bunların her biri artık konumunda %ProgramData%\NuGet\NuGetDefaults.Configbulunan bir dosya içinde yapılandırılabilir. Bu yapılandırma dosyası paket kaynaklarını belirtiyorsa, varsayılan nuget.org paket kaynağı otomatik olarak kaydedilmez ve bunun yerine içindekiler NuGetDefaults.Config kaydedilir.

Bu özelliği kullanmak için gerekli olmasa da, şirketlerin Grup İlkesi'ni kullanarak dosya dağıtmasını NuGetDefaults.Config bekliyoruz.

Bu özelliğin hiçbir zaman bir paket kaynağının geliştiricinin NuGet ayarlarından kaldırılmasına neden olmadığını unutmayın. Başka bir deyişle, geliştirici NuGet'i zaten kullandıysa ve bu nedenle nuget.org paket kaynağını kaydettiyse, dosya NuGetDefaults.Config oluşturulduktan sonra kaldırılmaz.

Bu özellik hakkında daha fazla bilgi için bkz . NuGet Yapılandırma Varsayılanları .

Varsayılan Paket Kaynağını Yeniden Adlandırma

NuGet her zaman nuget.org işaret eden "NuGet resmi paket kaynağı" adlı varsayılan paket kaynağını kaydetmiştir. Bu ad ayrıntılıydı ve aslında nereye işaret ettiğini belirtmedi. Bu iki sorunu çözmek için bu paket kaynağını kullanıcı arabiriminde yalnızca "nuget.org" olarak yeniden adlandırdık. Paket kaynağının URL'si de "www." ön ekini içerecek şekilde değiştirildi. NuGet 2.7'yi kullandıktan sonra, mevcut "NuGet resmi paket kaynağınız" otomatik olarak adı "nuget.org" ve URL'si olarak "https://www.nuget.org/api/v2/" olarak güncelleştirilir.

Performans Geliştirmeleri

2.7'de daha küçük bellek ayak izi, daha az disk kullanımı ve daha hızlı paket yüklemesi sağlayacak bazı performans iyileştirmeleri yaptık. Ayrıca OData tabanlı akışlarda genel yükü azaltacak daha akıllı sorgular da yaptık.

Yeni Genişletilebilirlik API'leri

Önceki sürümlerde eksik işlevler boşluğunu doldurmak için genişletilebilirlik hizmetlerimize bazı yeni API'ler ekledik.

IVsPackageInstallerServices

// Checks if a NuGet package with the specified Id and version is installed in the specified project.
bool IsPackageInstalledEx(Project project, string id, string versionString);

// Get the list of NuGet packages installed in the specified project.
IEnumerable<IVsPackageMetadata> GetInstalledPackages(Project project);

IVsPackageInstaller

// Installs one or more packages that exist on disk in a folder defined in the registry.
void InstallPackagesFromRegistryRepository(string keyName, bool isPreUnzipped, bool skipAssemblyReferences, Project project, IDictionary<string, string> packageVersions);

// Installs one or more packages that are embedded in a Visual Studio Extension Package.
void InstallPackagesFromVSExtensionRepository(string extensionId, bool isPreUnzipped, bool skipAssemblyReferences, Project project, IDictionary<string, string> packageVersions);

Yalnızca Geliştirme Bağımlılıkları

Bu özellik Adam Ralph tarafından katkıda bulunmuştur ve paket yazarlarının yalnızca geliştirme zamanında kullanılan ve paket bağımlılıkları gerektirmeyen bağımlılıkları bildirmesine olanak tanır. içindeki packages.confignuget.exe pack bir developmentDependency="true" pakete öznitelik eklendiğinde, artık bu paketi bağımlılık olarak dahil etmeyecektir.

Windows için Visual Studio 2010 Express desteği kaldırıldı Telefon

2.7 sürümündeki yeni paket geri yükleme modeli, ana NuGet VSPackage'dan farklı olan yeni bir VSPackage tarafından uygulanır. Teknik bir sorun nedeniyle, aynı kod tabanını desteklenen diğer Visual Studio SKU'larıyla paylaştığımız için bu yeni VSPackage Windows için Visual Studio 2010 Express Telefon SKU'da düzgün çalışmıyor. Bu nedenle NuGet 2.7'den başlayarak yayımlanan uzantıdan Windows için Visual Studio 2010 Express Telefon desteğini bırakıyoruz. Web için Visual Studio 2010 Express desteği, Visual Studio Uzantı Galerisi'nde yayımlanan birincil uzantıya eklenmiştir.

Visual Studio'nun bu sürümünde/sürümünde nuGet kullanmaya devam eden geliştirici sayısından emin olmadığımız için, bu kullanıcılar için özel olarak ayrı bir Visual Studio uzantısı yayımlıyoruz ve bunu CodePlex'te (Visual Studio Uzantı Galerisi yerine) yayımlıyoruz. Bu uzantıyı sürdürmeyi planlamıyoruz, ancak bu durum sizi etkiliyorsa lütfen CodePlex'te bir sorun bildirerek bize bildirin.

NuGet Paket Yöneticisi (Windows Telefon için Visual Studio 2010 Express için) indirmek için sayfayı ziyaret edin[NuGet 2.7 Downloads](https://nuget.codeplex.com/releases/view/107605).

Hata Düzeltmeleri

Bu özelliklere ek olarak, NuGet'in bu sürümü diğer birçok hata düzeltmesini de içerir. Sürümde ele alınan toplam 97 sorun vardı. NuGet 2.7'de sabit olan iş öğelerinin tam listesi için lütfen öğesini [NuGet Issue Tracker for this release](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.7&status=all)görüntüleyin.