Catatan Rilis NuGet 2.7
NuGet 2.6.1 untuk Catatan Rilis WebMatrix Catatan Rilis | NuGet 2.7.1
NuGet 2.7 dirilis pada 22 Agustus 2013.
Kami ingin berterima kasih kepada kontributor eksternal berikut atas kontribusi signifikan mereka terhadap NuGet 2.7:
[Mike Roth](http://www.codeplex.com/site/users/view/mxrss)
(@mxrss)- Tampilkan Url lisensi saat mencantumkan paket dan verbositas dirinci.
[Adam Ralph](http://www.codeplex.com/site/users/view/adamralph)
(@adamralph)[#1956](http://nuget.codeplex.com/workitem/1956)
- Tambahkan atribut developmentDependency kepackages.config
dan gunakan dalam perintah pack untuk hanya menyertakan paket runtime
[Rafael Nicoletti](http://www.codeplex.com/site/users/view/tkrafael)
(@tkrafael)- Hindari kunci Properti duplikat dalam perintah paket nuget.exe.
[Ben Phegan](http://www.codeplex.com/site/users/view/benphegan)
(@BenPhegan)[#2610](http://nuget.codeplex.com/workitem/2610)
- Meningkatkan ukuran cache mesin menjadi 200.
[Slava Trenogin](http://www.codeplex.com/site/users/view/derigel)
(@derigel)[#3217](http://nuget.codeplex.com/workitem/3217)
- Perbaiki dialog NuGet memperlihatkan pembaruan di tab yang salah- Memperbaiki Project.TargetFramework dapat null di ProjectManager
[#3248](http://nuget.codeplex.com/workitem/3248)
- Memperbaiki SharedPackageRepository FindPackage/FindPackagesById akan gagal pada packageId yang tidak ada
[Kevin Boyle](http://www.codeplex.com/site/users/view/KevinBoyleRG)
(@kevfromireland)[#3234](http://nuget.codeplex.com/workitem/3234)
- Aktifkan dukungan untuk proyek Nomad
[Corin Blaikie](http://www.codeplex.com/site/users/view/corinblaikie)
(@corinblaikie)[#3252](http://nuget.codeplex.com/workitem/3252)
- Perbaiki perintah push gagal dengan kode keluar 0 ketika file tidak ada.
[Martin Veselý](http://www.codeplex.com/site/users/view/veselkamartin)
[#3226](http://nuget.codeplex.com/workitem/3226)
- Perbaiki bug dengan perintah Add-BindingRedirect saat proyek mereferensikan proyek database.
[Miroslav Bajtos](http://www.codeplex.com/site/users/view/miroslavbajtos)
(@bajtos)[#2891](http://nuget.codeplex.com/workitem/2891)
- Perbaiki bug nuget.pack penguraian wildcard dalam atribut 'kecualikan' dengan tidak benar.
[Justin Dearing](http://www.codeplex.com/site/users/view/zippy1981)
(@zippy1981)[#3307](http://nuget.codeplex.com/workitem/3307)
- Memperbaiki bugNuGet.targets
tidak meneruskan $(Platform) ke nuget.exe saat memulihkan paket.
[Brian Federici](http://www.codeplex.com/site/users/view/benerdin)
[#3294](http://nuget.codeplex.com/workitem/3294)
- Perbaiki bug dalam perintah paket nuget.exe yang akan memungkinkan penambahan file dengan nama yang sama tetapi casing yang berbeda, akhirnya menyebabkan pengecualian "Item sudah ada".
[Daniel Cazzulino](http://www.codeplex.com/site/users/view/dcazzulino)
(@kzu)[#2990](http://nuget.codeplex.com/workitem/2990)
- Tambahkan properti Versi ke kelas NetPortableProfile.
[David Simner](https://www.codeplex.com/site/users/view/DavidSimner)
[#3460](https://nuget.codeplex.com/workitem/3460)
- Perbaiki bug NullReferenceException jika requireApiKey = true, tetapi header X-NUGET-APIKEY tidak ada
[Michael Friis](https://www.codeplex.com/site/users/view/friism)
(@friism)[#3278](https://nuget.codeplex.com/workitem/3278)
- Memperbaiki file target NuGet.Build agar berfungsi dengan benar di MonoDevelop
[Pranav Krishnamoorthy](https://www.codeplex.com/site/users/view/pranavkm)
(@pranav_km)- Meningkatkan performa perintah Pemulihan dengan meningkatkan paralelisasi
NuGet 2.7 memperkenalkan pendekatan baru untuk pemulihan paket, dan juga mengatasi rintangan utama: Persetujuan pemulihan paket sekarang aktif secara default! Kombinasi pendekatan baru dan persetujuan implisit akan secara drastis menyederhanakan skenario pemulihan paket.
Dengan NuGet versi 2.0, 2.1, 2.2, 2.5, dan 2.6, pengguna perlu secara eksplisit mengizinkan NuGet mengunduh paket yang hilang selama build. Jika persetujuan ini tidak diberikan secara eksplisit, maka solusi yang telah mengaktifkan pemulihan paket akan gagal dibangun hingga pengguna memberikan persetujuan.
Dimulai dengan NuGet 2.7, persetujuan pemulihan paket aktif secara default sambil memungkinkan pengguna untuk secara eksplisit menolak pemulihan paket jika diinginkan, menggunakan kotak centang di pengaturan NuGet di Visual Studio. Perubahan untuk persetujuan implisit ini memengaruhi NuGet di lingkungan berikut:
- Pratinjau Visual Studio 2013
- Visual Studio 2012
- Visual Studio 2010
- Utilitas Baris Perintah nuget.exe
Dimulai dengan NuGet 2.7, NuGet akan secara otomatis mengunduh paket yang hilang selama build di Visual Studio, bahkan jika pemulihan paket belum diaktifkan secara eksplisit untuk solusi. Pemulihan Paket Otomatis ini terjadi di Visual Studio saat Anda membuat proyek atau solusi, tetapi sebelum MSBuild dipanggil. Ini menghasilkan beberapa manfaat signifikan:
- Tidak perlu lagi menggunakan gerakan "Aktifkan Pemulihan Paket NuGet" pada solusi Anda
- Proyek tidak perlu dimodifikasi, dan NuGet tidak akan membuat perubahan pada proyek Anda untuk memastikan pemulihan paket diaktifkan
- Semua paket NuGet, termasuk yang menyertakan impor MSBuild untuk file alat peraga/target, akan dipulihkan sebelum MSBuild dipanggil, memastikan alat peraga/target tersebut dikenali dengan benar selama build
Untuk menggunakan Pemulihan Paket Otomatis di Visual Studio, Anda hanya perlu mengambil satu (dalam)tindakan:
- Jangan periksa folder Anda
packages
Ada beberapa cara untuk menghilangkan folder Anda packages
dari kontrol sumber. Untuk informasi selengkapnya, lihat topik Paket dan Kontrol Sumber.
Meskipun semua pengguna secara implisit memilih persetujuan Pemulihan Paket Otomatis, Anda dapat dengan mudah memilih keluar melalui pengaturan Pengelola Paket di Visual Studio.
NuGet 2.7 memperkenalkan fitur baru untuk nuget.exe: nuget.exe restore
Perintah Pulihkan baru ini memungkinkan Anda memulihkan semua paket dengan mudah untuk solusi dengan satu perintah, dengan menerima file solusi atau folder sebagai argumen. Selain itu, argumen itu tersirat ketika hanya ada satu solusi di folder saat ini. Itu berarti semua pekerjaan berikut dari folder yang berisi satu file solusi (MySolution.sln):
- MySolution.sln pemulihan nuget.exe
- nuget.exe memulihkan .
- pemulihan nuget.exe
Perintah Pulihkan akan membuka file solusi dan menemukan semua proyek dalam solusi. Dari sana, ia akan menemukan packages.config
file untuk setiap proyek dan memulihkan semua paket yang ditemukan. Ini juga memulihkan paket tingkat solusi yang ditemukan dalam .nuget\packages.config
file. Informasi selengkapnya tentang perintah Pulihkan baru dapat ditemukan di Referensi Baris Perintah.
Kami sangat senang dengan perubahan ini pada Pemulihan Paket, karena memperkenalkan alur kerja baru. Jika Anda ingin menghilangkan paket Anda dari kontrol sumber, Anda tidak menerapkan packages
folder. Pengguna Visual Studio yang membuka dan membangun solusi akan melihat paket dipulihkan secara otomatis. Untuk build baris perintah, cukup panggil nuget.exe restore
sebelum memanggil msbuild
. Anda tidak perlu lagi mengingat untuk menggunakan gerakan "Aktifkan Pemulihan Paket NuGet" pada solusi Anda, dan kami tidak perlu lagi memodifikasi proyek Anda untuk mengubah build. Dan ini juga menghasilkan pengalaman yang jauh lebih baik untuk paket yang mencakup impor MSBuild, terutama untuk impor yang ditambahkan melalui fitur Terbaru NuGet untuk mengimpor file alat peraga/target secara otomatis dari folder \build.
Selain pekerjaan yang telah kami lakukan sendiri, kami juga bekerja sama dengan beberapa mitra penting untuk menyelesaikan pendekatan baru ini. Kami belum memiliki garis waktu konkret untuk salah satu dari ini, tetapi setiap mitra sama bersemangatnya dengan pendekatan baru.
- Team Foundation Service - Mereka berupaya mengintegrasikan panggilan ke
nuget.exe restore
dalam skenario build default. - Situs Web Windows Azure - Mereka bekerja untuk memungkinkan Anda mendorong proyek Anda ke Azure dan telah
nuget.exe restore
dipanggil sebelum situs web Anda dibangun. - TeamCity - Mereka memperbarui plugin Penginstal NuGet mereka untuk TeamCity 8.x
- AppHarbor - Mereka bekerja untuk memungkinkan Anda mendorong repositori Anda ke AppHarbor dan telah
nuget.exe restore
menelepon sebelum solusi Anda dibangun.
Dengan setiap mitra di atas, mereka akan menggunakan salinan nuget.exe mereka sendiri dan Anda tidak perlu membawa nuget.exe dalam solusi Anda.
Ada dua masalah yang diketahui dengan pemulihan nuget.exe dengan rilis 2.7 awal, tetapi diperbaiki pada 6/9/2013 dengan pembaruan ke paket NuGet.CommandLine. Pembaruan ini juga tersedia di [NuGet 2.7 download page](https://nuget.codeplex.com/releases/view/107605)
CodePlex. Menjalankan nuget.exe update -self
akan diperbarui ke rilis terbaru.
Yang diperbaiki adalah:
[New package restore doesn't work on Mono when using SLN file](https://nuget.codeplex.com/workitem/3596)
[New package restore doesn't work with Wix projects](https://nuget.codeplex.com/workitem/3598)
Ada juga masalah yang diketahui dengan alur kerja pemulihan paket baru di mana [Automatic Package Restore does not work for projects under a solution folder](https://nuget.codeplex.com/workitem/3625)
. Masalah ini diperbaiki di NuGet 2.7.1.
Sering kali setelah menargetkan ulang atau meningkatkan proyek, Anda menemukan bahwa beberapa paket NuGet tidak berfungsi dengan baik. Sayangnya, tidak ada indikasi ini dan kemudian tidak ada panduan tentang cara mengatasinya. Dengan NuGet 2.7, kami sekarang menggunakan beberapa peristiwa Visual Studio untuk mengenali kapan Anda telah menargetkan ulang atau meningkatkan proyek Anda dengan cara yang memengaruhi paket NuGet yang diinstal.
Jika kami mendeteksi bahwa salah satu paket Anda terpengaruh oleh penargetan ulang atau peningkatan, kami akan menghasilkan kesalahan build segera untuk memberi tahu Anda. Selain kesalahan build segera, kami juga mempertahankan requireReinstallation="true"
bendera di file Anda packages.config
untuk semua paket yang terpengaruh oleh penargetan ulang, dan setiap build berikutnya di Visual Studio akan meningkatkan peringatan build untuk paket tersebut.
Meskipun NuGet tidak dapat mengambil tindakan otomatis untuk menginstal ulang paket yang terpengaruh, kami berharap indikasi dan peringatan ini akan memandu membantu Anda menemukan kapan Anda perlu menginstal ulang paket. Kami juga sedang mengerjakan dokumentasi panduan penginstalan ulang paket yang mengarahkan Anda ke pesan kesalahan ini.
Banyak perusahaan menggunakan NuGet secara internal, tetapi mengalami kesulitan membimbing pengembang mereka untuk menggunakan sumber paket internal alih-alih nuget.org. NuGet 2.7 memperkenalkan fitur Default Konfigurasi yang memungkinkan default di seluruh komputer ditentukan untuk:
- Sumber paket yang diaktifkan
- Sumber paket terdaftar, tetapi dinonaktifkan
- Sumber dorong nuget.exe default
Masing-masing sekarang dapat dikonfigurasi dalam file yang terletak di %ProgramData%\NuGet\NuGetDefaults.Config
. Jika file konfigurasi ini menentukan sumber paket, maka sumber paket nuget.org default tidak akan didaftarkan secara otomatis, dan yang ada di NuGetDefaults.Config
akan didaftarkan sebagai gantinya.
Meskipun tidak diperlukan untuk menggunakan fitur ini, kami mengharapkan perusahaan untuk menyebarkan NuGetDefaults.Config
file menggunakan Kebijakan Grup.
Perhatikan bahwa fitur ini tidak akan pernah menyebabkan sumber paket dihapus dari pengaturan NuGet pengembang. Itu berarti jika pengembang telah menggunakan NuGet dan karena itu memiliki sumber paket nuget.org terdaftar, itu tidak akan dihapus setelah pembuatan NuGetDefaults.Config
file.
Lihat Default Konfigurasi NuGet untuk informasi selengkapnya tentang fitur ini.
NuGet selalu mendaftarkan sumber paket default yang disebut "sumber paket resmi NuGet" yang menunjuk ke nuget.org. Nama itu verbose dan juga tidak menentukan di mana sebenarnya menunjuk. Untuk mengatasi kedua masalah tersebut, kami telah mengganti nama sumber paket ini menjadi "nuget.org" di UI. URL untuk sumber paket juga diubah untuk menyertakan awalan "www.". Setelah menggunakan NuGet 2.7, "Sumber paket resmi NuGet" yang ada akan secara otomatis diperbarui ke "nuget.org" sebagai namanya dan "https://www.nuget.org/api/v2/" sebagai URL-nya.
Kami melakukan beberapa peningkatan performa di 2.7 yang akan menghasilkan jejak memori yang lebih kecil, penggunaan disk yang lebih sedikit, dan penginstalan paket yang lebih cepat. Kami juga membuat kueri yang lebih cerdas ke umpan berbasis OData yang akan mengurangi payload keseluruhan.
Kami menambahkan beberapa API baru ke layanan ekstensibilitas kami untuk mengisi kesenjangan fungsi yang hilang dalam rilis sebelumnya.
// 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);
// 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);
Fitur ini dikontribusikan oleh Adam Ralph dan memungkinkan penulis paket untuk mendeklarasikan dependensi yang hanya digunakan pada waktu pengembangan dan tidak memerlukan dependensi paket. Dengan menambahkan developmentDependency="true"
atribut ke paket di packages.config
, nuget.exe pack
tidak akan lagi menyertakan paket tersebut sebagai dependensi.
Model pemulihan paket baru di 2.7 diimplementasikan oleh VSPackage baru yang berbeda dari NuGet VSPackage utama. Karena masalah teknis, VSPackage baru ini tidak berfungsi dengan benar di Visual Studio 2010 Express untuk Windows Telepon SKU karena kami berbagi basis kode yang sama dengan SKU Visual Studio lain yang didukung. Oleh karena itu, dimulai dengan NuGet 2.7, kami menghilangkan dukungan untuk Visual Studio 2010 Express untuk Windows Telepon dari ekstensi yang diterbitkan. Dukungan untuk Visual Studio 2010 Express for Web masih disertakan dalam ekstensi utama yang diterbitkan ke Visual Studio Extension Gallery.
Karena kami tidak yakin berapa banyak pengembang yang masih menggunakan NuGet dalam versi/edisi Visual Studio tersebut, kami menerbitkan ekstensi Visual Studio terpisah khusus untuk pengguna tersebut dan menerbitkannya di CodePlex (bukan Visual Studio Extension Gallery). Kami tidak berencana untuk terus mempertahankan ekstensi tersebut, tetapi jika hal ini memengaruhi Anda, beri tahu kami dengan mengajukan masalah pada CodePlex.
Untuk mengunduh Manajer Paket NuGet (untuk Visual Studio 2010 Express untuk Windows Telepon), kunjungi halaman.[NuGet 2.7 Downloads](https://nuget.codeplex.com/releases/view/107605)
Selain fitur-fitur ini, rilis NuGet ini juga mencakup banyak perbaikan bug lainnya. Ada 97 total masalah yang ditangani dalam rilis. Untuk daftar lengkap item kerja yang diperbaiki di NuGet 2.7, silakan lihat [NuGet Issue Tracker for this release](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.7&status=all)
.