Bagikan melalui


Catatan Rilis NuGet 2.8

Catatan Rilis NuGet 2.7.2 Catatan Rilis | NuGet 2.8.1

NuGet 2.8 dirilis pada 29 Januari 2014.

Pengakuan

  1. [Llewellyn Pritchard](https://www.codeplex.com/site/users/view/leppie) (@leppie)
    • [#3466](https://nuget.codeplex.com/workitem/3466) - Saat mengemas paket, memverifikasi Id paket dependensi.
  2. [Maarten Balliauw](https://www.codeplex.com/site/users/view/maartenba) (@maartenballiauw)
    • [#2379](https://nuget.codeplex.com/workitem/2379) - Hapus akhiran $metadata saat mempertahankan kredensial umpan.
  3. [Filip De Vos](https://www.codeplex.com/site/users/view/FilipDeVos) (@foxtricks)
    • [#3538](http://nuget.codeplex.com/workitem/3538) - Dukungan menentukan file proyek untuk perintah pembaruan nuget.exe.
  4. [Juan Gonzalez](https://www.codeplex.com/site/users/view/jjgonzalez)
    • [#3536](http://nuget.codeplex.com/workitem/3536) - Token pengganti tidak diteruskan dengan -IncludeReferencedProjects.
  5. [David Poole](https://www.codeplex.com/site/users/view/Sarkie) (@Sarkie_Dave)
    • [#3677](http://nuget.codeplex.com/workitem/3677) - Perbaiki nuget.push melempar OutOfMemoryException saat mendorong paket besar.
  6. [Wouter Ouwens](https://www.codeplex.com/site/users/view/Despotes)
    • [#3666](http://nuget.codeplex.com/workitem/3666) - Perbaiki jalur target yang salah saat proyek mereferensikan proyek CLI/C++ lain.
  7. [Adam Ralph](http://www.codeplex.com/site/users/view/adamralph) (@adamralph)
    • [#3639](https://nuget.codeplex.com/workitem/3639) - Izinkan paket diinstal sebagai dependensi pengembangan secara default
  8. [David Fowler](https://www.codeplex.com/site/users/view/dfowler) (@davidfowl)
    • [#3717](https://nuget.codeplex.com/workitem/3717) - Menghapus peningkatan implisit ke versi patch terbaru
  9. [Gregory Vandenbrouck](https://www.codeplex.com/site/users/view/vdbg)
    • Beberapa perbaikan bug dan peningkatan untuk NuGet.Server, perintah cermin nuget.exe, dan lainnya.
    • Pekerjaan ini dilakukan selama beberapa bulan, dengan Gregory bekerja dengan kami pada waktu yang tepat untuk berintegrasi ke master untuk 2.8.

Resolusi Patch untuk Dependensi

Saat menyelesaikan dependensi paket, NuGet secara historis telah menerapkan strategi memilih versi paket utama dan minor terendah yang memenuhi dependensi pada paket. Namun, tidak seperti versi utama dan minor, versi patch selalu diselesaikan ke versi tertinggi. Meskipun perilaku itu disengaja dengan baik, itu menciptakan kurangnya determinisme untuk menginstal paket dengan dependensi. Pertimbangkan contoh berikut:

PackageA@1.0.0 -[ >=1.0.0 ]-> PackageB@1.0.0

Developer1 installs PackageA@1.0.0: installed PackageA@1.0.0 and PackageB@1.0.0

PackageB@1.0.1 is published

Developer2 installs PackageA@1.0.0: installed PackageA@1.0.0 and PackageB@1.0.1

Dalam contoh ini, meskipun Developer1 dan Developer2 diinstal PackageA@1.0.0, masing-masing berakhir dengan versi PackageB yang berbeda. NuGet 2.8 mengubah perilaku default ini sehingga perilaku resolusi dependensi untuk versi patch konsisten dengan perilaku untuk versi utama dan minor. Dalam contoh di atas, maka, PackageB@1.0.0 akan diinstal sebagai akibat dari menginstal PackageA@1.0.0, terlepas dari versi patch yang lebih baru.

-DependencyVersion Switch

Meskipun NuGet 2.8 mengubah perilaku default untuk menyelesaikan dependensi, NuGet 2.8 juga menambahkan kontrol yang lebih tepat atas proses resolusi dependensi melalui sakelar -DependencyVersion di konsol manajer paket. Sakelar memungkinkan penyelesaian dependensi ke versi terendah yang mungkin (perilaku default), versi tertinggi yang mungkin, atau versi minor atau patch tertinggi. Sakelar ini hanya berfungsi untuk paket instal dalam perintah powershell.

DependencyVersion Switch

Atribut DependencyVersion

Selain sakelar -DependencyVersion yang dirinci di atas, NuGet juga telah mengizinkan kemampuan untuk mengatur atribut baru dalam file Nuget.Config yang menentukan apa nilai defaultnya, jika sakelar -DependencyVersion tidak ditentukan dalam pemanggilan paket instal. Nilai ini juga akan dihormati oleh Dialog Manajer Paket NuGet untuk operasi paket penginstalan apa pun. Untuk mengatur nilai ini, tambahkan atribut di bawah ini ke file Nuget.Config Anda:

<config>
    <add key="dependencyversion" value="Highest" />
</config>

Pratinjau Operasi NuGet Dengan -whatif

Beberapa paket NuGet dapat memiliki grafik dependensi mendalam, dan dengan demikian, dapat membantu selama operasi penginstalan, penghapusan instalasi, atau pembaruan untuk terlebih dahulu melihat apa yang akan terjadi. NuGet 2.8 menambahkan perintah PowerShell -whatif switch standar ke perintah install-package, uninstall-package, dan update-package untuk memungkinkan memvisualisasikan seluruh penutupan paket tempat perintah akan diterapkan. Misalnya, berjalan install-package Microsoft.AspNet.WebApi -whatif dalam aplikasi Web ASP.NET kosong menghasilkan hal berikut.

PM> install-package Microsoft.AspNet.WebApi -whatif
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.WebHost (≥ 5.0.0)'.
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.Core (≥ 5.0.0)'.
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.Client (≥ 5.0.0)'.
Attempting to resolve dependency 'Newtonsoft.Json (≥ 4.5.11)'.
Install Newtonsoft.Json 4.5.11
Install Microsoft.AspNet.WebApi.Client 5.0.0
Install Microsoft.AspNet.WebApi.Core 5.0.0
Install Microsoft.AspNet.WebApi.WebHost 5.0.0
Install Microsoft.AspNet.WebApi 5.0.0

Paket Downgrade

Tidak jarang menginstal versi prarilis paket untuk menyelidiki fitur baru dan kemudian memutuskan untuk mengembalikan ke versi stabil terakhir. Sebelum NuGet 2.8, ini adalah proses multi-langkah untuk menghapus instalan paket prarilis dan dependensinya, lalu menginstal versi sebelumnya. Namun, dengan NuGet 2.8, paket pembaruan sekarang akan mengembalikan seluruh penutupan paket (misalnya pohon dependensi paket) ke versi sebelumnya.

Dependensi Pengembangan

Banyak jenis kemampuan yang berbeda dapat dikirimkan sebagai paket NuGet - termasuk alat yang digunakan untuk mengoptimalkan proses pengembangan. Komponen-komponen ini, meskipun dapat bersifat instrumental dalam mengembangkan paket baru, tidak boleh dianggap sebagai dependensi dari paket baru ketika kemudian diterbitkan. NuGet 2.8 memungkinkan paket untuk mengidentifikasi dirinya sendiri dalam .nuspec file sebagai developmentDependency. Ketika diinstal, metadata ini juga akan ditambahkan ke packages.config file proyek tempat paket diinstal. packages.config Ketika file tersebut kemudian dianalisis untuk dependensi NuGet selama nuget.exe pack, file tersebut akan mengecualikan dependensi yang ditandai sebagai dependensi pengembangan.

File packages.config individual untuk Platform yang Berbeda

Saat mengembangkan aplikasi untuk beberapa platform target, umumnya memiliki file proyek yang berbeda untuk setiap lingkungan build masing-masing. Juga umum untuk mengonsumsi paket NuGet yang berbeda dalam file proyek yang berbeda, karena paket memiliki berbagai tingkat dukungan untuk platform yang berbeda. NuGet 2.8 memberikan dukungan yang ditingkatkan untuk skenario ini dengan membuat file yang berbeda packages.config untuk file proyek khusus platform yang berbeda.

Multiple package.config files

Fallback ke Cache Lokal

Meskipun paket NuGet biasanya digunakan dari galeri jarak jauh seperti galeri NuGet menggunakan koneksi jaringan, ada banyak skenario di mana klien tidak terhubung. Tanpa koneksi jaringan, klien NuGet tidak berhasil menginstal paket - bahkan ketika paket tersebut sudah ada di komputer klien di cache NuGet lokal. NuGet 2.8 menambahkan fallback cache otomatis ke konsol manajer paket. Misalnya, saat memutuskan sambungan adaptor jaringan dan menginstal jQuery, konsol menunjukkan hal berikut:

PM> Install-Package jquery
The source at nuget.org [https://www.nuget.org/api/v2/] is unreachable. Falling back to NuGet Local Cache at C:\Users\me\AppData\Local\NuGet\Cache
Installing 'jQuery 2.0.3'.
Successfully installed 'jQuery 2.0.3'.
Adding 'jQuery 2.0.3' to WebApplication18.
Successfully added 'jQuery 2.0.3' to WebApplication18.

Fitur fallback cache tidak memerlukan argumen perintah tertentu. Selain itu, fallback cache saat ini hanya berfungsi di konsol manajer paket - perilaku saat ini tidak berfungsi dalam dialog manajer paket.

Pembaruan Klien WebMatrix NuGet

Seiring dengan NuGet 2.8, ekstensi NuGet untuk WebMatrix juga diperbarui untuk menyertakan banyak fitur utama yang dikirimkan dengan NuGet 2.5. Kemampuan baru termasuk yang seperti 'Perbarui Semua', 'Versi NuGet Minimum', dan memungkinkan penimpaan file konten.

Untuk memperbarui ekstensi NuGet Package Manager Anda di WebMatrix 3:

  1. Buka WebMatrix 3
  2. Klik ikon Ekstensi di pita
  3. Pilih tab Pembaruan
  4. Klik untuk memperbarui NuGet Package Manager ke 2.5.0
  5. Tutup dan mulai ulang WebMatrix 3

Ini adalah rilis pertama tim NuGet dari ekstensi NuGet Package Manager untuk WebMatrix. Kode baru-baru ini dikontribusikan oleh Microsoft ke dalam proyek NuGet sumber terbuka. Sebelumnya, integrasi NuGet dibangun ke dalam WebMatrix, dan tidak dapat diperbarui dari band dari WebMatrix. Kami sekarang memiliki kemampuan untuk memperbaruinya lebih lanjut bersama alat klien NuGet lainnya.

Perbaikan Bug

Salah satu perbaikan bug utama yang dilakukan adalah peningkatan performa dalam perintah update-package -reinstall.

Selain fitur-fitur ini dan perbaikan performa yang disebutkan di atas, rilis NuGet ini juga mencakup banyak perbaikan bug lainnya. Ada 181 total masalah yang ditangani dalam rilis. Untuk daftar lengkap item kerja yang diperbaiki di NuGet 2.8, silakan lihat [NuGet Issue Tracker for this release](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.8&status=all).