Baca dalam bahasa Inggris

Bagikan melalui


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.

Pengakuan

Kami ingin berterima kasih kepada kontributor eksternal berikut atas kontribusi signifikan mereka terhadap NuGet 2.7:

  1. [Mike Roth](http://www.codeplex.com/site/users/view/mxrss) (@mxrss)
    • Tampilkan Url lisensi saat mencantumkan paket dan verbositas dirinci.
  2. [Adam Ralph](http://www.codeplex.com/site/users/view/adamralph) (@adamralph)
    • [#1956](http://nuget.codeplex.com/workitem/1956) - Tambahkan atribut developmentDependency ke packages.config dan gunakan dalam perintah pack untuk hanya menyertakan paket runtime
  3. [Rafael Nicoletti](http://www.codeplex.com/site/users/view/tkrafael) (@tkrafael)
    • Hindari kunci Properti duplikat dalam perintah paket nuget.exe.
  4. [Ben Phegan](http://www.codeplex.com/site/users/view/benphegan) (@BenPhegan)
    • [#2610](http://nuget.codeplex.com/workitem/2610) - Meningkatkan ukuran cache mesin menjadi 200.
  5. [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
  6. [Kevin Boyle](http://www.codeplex.com/site/users/view/KevinBoyleRG) (@kevfromireland)
    • [#3234](http://nuget.codeplex.com/workitem/3234) - Aktifkan dukungan untuk proyek Nomad
  7. [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.
  8. [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.
  9. [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.
  10. [Justin Dearing](http://www.codeplex.com/site/users/view/zippy1981) (@zippy1981)
    • [#3307](http://nuget.codeplex.com/workitem/3307) - Memperbaiki bug NuGet.targets tidak meneruskan $(Platform) ke nuget.exe saat memulihkan paket.
  11. [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".
  12. [Daniel Cazzulino](http://www.codeplex.com/site/users/view/dcazzulino) (@kzu)
    • [#2990](http://nuget.codeplex.com/workitem/2990) - Tambahkan properti Versi ke kelas NetPortableProfile.
  13. [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
  14. [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
  15. [Pranav Krishnamoorthy](https://www.codeplex.com/site/users/view/pranavkm) (@pranav_km)
    • Meningkatkan performa perintah Pemulihan dengan meningkatkan paralelisasi

Fitur penting dalam rilis

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

Pemulihan Paket Otomatis di Visual Studio

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:

  1. Tidak perlu lagi menggunakan gerakan "Aktifkan Pemulihan Paket NuGet" pada solusi Anda
  2. Proyek tidak perlu dimodifikasi, dan NuGet tidak akan membuat perubahan pada proyek Anda untuk memastikan pemulihan paket diaktifkan
  3. 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:

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

Package Manager Settings

Pemulihan Paket yang Disederhanakan dari Baris Perintah

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):

  1. MySolution.sln pemulihan nuget.exe
  2. nuget.exe memulihkan .
  3. 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.

Alur Kerja Pemulihan Paket Baru

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.

Masalah Umum

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:

  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)

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.

Project Retargeting dan Upgrade Build Errors/Warnings

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.

Default Konfigurasi NuGet

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:

  1. Sumber paket yang diaktifkan
  2. Sumber paket terdaftar, tetapi dinonaktifkan
  3. 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.

Mengganti nama Sumber Paket Default

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.

Peningkatan Performa

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.

API Ekstensibilitas Baru

Kami menambahkan beberapa API baru ke layanan ekstensibilitas kami untuk mengisi kesenjangan fungsi yang hilang dalam rilis sebelumnya.

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);

Dependensi Khusus Pengembangan

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.

Dukungan yang Dihapus untuk Visual Studio 2010 Express untuk Windows Telepon

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)

Perbaikan Bug

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