Catatan Rilis NuGet 2.5
Catatan Rilis NuGet 2.2.1 Catatan Rilis | NuGet 2.6
NuGet 2.5 dirilis pada 25 April 2013. Rilis ini sangat besar, kami merasa terpaksa untuk melewati versi 2.3 dan 2.4! Hingga saat ini, ini adalah rilis terbesar yang kami miliki untuk NuGet, dengan lebih [160 work items](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.5&status=all)
dalam rilis.
Kami ingin berterima kasih kepada kontributor eksternal berikut atas kontribusi signifikan mereka terhadap NuGet 2.5:
[Daniel Plaisted](https://www.codeplex.com/site/users/view/dsplaisted)
(@dsplaisted)[#2847](https://nuget.codeplex.com/workitem/2847)
- Tambahkan MonoAndroid, MonoTouch, dan MonoMac ke daftar pengidentifikasi kerangka kerja target yang diketahui.
[Andres G. Aragoneses](https://www.codeplex.com/site/users/view/knocte)
(@knocte)[#2865](https://nuget.codeplex.com/workitem/2865)
- Memperbaiki ejaanNuGet.targets
untuk OS peka huruf besar/kecil
[David Fowler](https://www.codeplex.com/site/users/view/dfowler)
(@davidfowl)- Buat solusi dibangun di Mono.
[Andrew Theken](https://www.codeplex.com/site/users/view/atheken)
(@atheken)- Memperbaiki pengujian unit yang gagal pada Mono.
[Olivier Dagenais](https://www.codeplex.com/site/users/view/OliIsCool)
(@OliIsCool)[#2920](https://nuget.codeplex.com/workitem/2920)
- perintah paket nuget.exe tidak menyebarkan Properti ke MSBuild
[Miroslav Bajtos](https://www.codeplex.com/site/users/view/MiroslavBajtos)
(@bajtos)[#1511](https://nuget.codeplex.com/workitem/1511)
- Kode penanganan XML yang dimodifikasi untuk mempertahankan pemformatan.
[Adam Ralph](http://www.codeplex.com/site/users/view/adamralph)
(@adamralph)- Menambahkan kata yang dikenali ke kamus kustom untuk memungkinkan build.cmd berhasil.
[Bruno Roggeri](https://www.codeplex.com/site/users/view/broggeri)
- Perbaiki pengujian unit saat berjalan di VS yang dilokalkan.
[Gareth Evans](https://www.codeplex.com/site/users/view/garethevans)
- Antarmuka yang diekstrak dari PackageService
[Maxime Brugidou](https://www.codeplex.com/site/users/view/brugidou)
(@brugidou)[#936](https://nuget.codeplex.com/workitem/936)
- Menangani dependensi proyek saat mengemas
[Xavier Decoster](https://www.codeplex.com/site/users/view/XavierDecoster)
(@XavierDecoster)[#2991](https://nuget.codeplex.com/workitem/2991)
,[#3164](https://nuget.codeplex.com/workitem/3164)
- Mendukung Clear Text Password saat menyimpan kredensial sumber paket dalam file nuget.cofig
[James Manning](http://www.codeplex.com/site/users/view/jmanning)
(@manningj)[#3190](http://nuget.codeplex.com/workitem/3190)
,[#3191](https://nuget.codeplex.com/workitem/3191)
- Memperbaiki deskripsi bantuan Get-Package
Kami juga menghargai individu berikut karena menemukan bug dengan NuGet 2.5 Beta/RC yang disetujui dan diperbaiki sebelum rilis akhir:
[Tony Wall](https://www.codeplex.com/site/users/view/CodeChief)
(@CodeChief)[#3200](https://nuget.codeplex.com/workitem/3200)
- MSTest rusak dengan build NuGet 2.4 dan 2.5 terlama
Salah satu fitur yang paling banyak diminta sepanjang masa adalah kemampuan untuk menimpa file konten yang sudah ada di disk ketika disertakan dalam paket NuGet. Dimulai dengan NuGet 2.5, konflik ini diidentifikasi dan Anda diminta untuk menimpa file, sedangkan sebelumnya file-file ini selalu dilewati.
'nuget.exe update' dan 'Install-Package' sekarang keduanya memiliki opsi baru '-FileConflictAction' untuk mengatur beberapa default untuk skenario baris perintah.
Atur tindakan default saat file dari paket sudah ada di proyek target. Atur ke 'Timpa' untuk selalu menimpa file. Atur ke 'Abaikan' untuk melewati file. Jika tidak ditentukan, file akan meminta setiap file yang bertentangan.
Folder konvensional baru telah dibuat di tingkat atas paket NuGet. Sebagai peer ke \lib
, , dan \tools
, Anda sekarang dapat menyertakan \build
folder \content
dalam paket Anda. Di bawah folder ini, Anda dapat menempatkan dua file dengan nama tetap, {packageid}.targets
atau {packageid}.props
. Kedua file ini dapat berada langsung di bawah build
atau di bawah folder khusus kerangka kerja seperti folder lainnya. Aturan untuk memilih folder kerangka kerja yang paling cocok sama persis dengan yang ada di folder tersebut.
Ketika NuGet menginstal paket dengan file \build, NuGet akan menambahkan elemen MSBuild <Import>
dalam file proyek yang menunjuk ke .targets
file dan .props
. File .props
ditambahkan di bagian atas, sedangkan .targets
file ditambahkan ke bagian bawah.
Sebelum 2.5, dalam .nuspec
file, pengguna hanya dapat menentukan file referensi, yang akan ditambahkan untuk semua kerangka kerja. Sekarang dengan fitur baru ini di 2.5, pengguna dapat menulis <reference/>
elemen untuk setiap platform yang didukung, misalnya:
<references>
<group targetFramework="net45">
<reference file="a.dll" />
</group>
<group targetFramework="netcore45">
<reference file="b.dll" />
</group>
<group>
<reference file="c.dll" />
</group>
</references>
Berikut adalah alur bagaimana NuGet menambahkan referensi ke proyek berdasarkan .nuspec
file:
lib
Temukan folder yang sesuai untuk kerangka kerja target dan dapatkan daftar rakitan dari folder tersebut- Temukan grup referensi secara terpisah yang sesuai untuk kerangka kerja target dan dapatkan daftar rakitan dari grup tersebut. Grup referensi tanpa kerangka kerja target yang ditentukan adalah grup fallback.
- Temukan persimpangan dari dua daftar, dan gunakan sebagai referensi untuk ditambahkan
Fitur baru ini akan memungkinkan penulis paket untuk menggunakan fitur Referensi untuk menerapkan subset rakitan ke kerangka kerja yang berbeda ketika mereka perlu membawa rakitan duplikat di beberapa lib
folder.
Catatan: Anda saat ini harus menggunakan paket nuget.exe untuk menggunakan fitur ini; NuGet Package Explorer belum mendukungnya.
Banyak dari Anda tahu tentang cmdlet PowerShell "Perbarui-Paket" untuk memperbarui semua paket Anda; sekarang ada cara mudah untuk melakukan ini melalui UI juga.
Untuk mencoba fitur ini:
- Membuat aplikasi MVC ASP.NET baru
- Luncurkan dialog 'Kelola Paket NuGet'
- Pilih 'Pembaruan'
- Klik tombol 'Perbarui Semua'
Sekarang nuget.exe proses perintah paket yang dirujuk proyek dengan aturan berikut:
- Jika proyek yang dirujuk memiliki file yang
.nuspec
sesuai, misalnya ada file yang disebutproj1.nuspec
di folder yang sama denganproj1.csproj
, maka proyek ini ditambahkan sebagai dependensi ke paket, menggunakan id dan versi yang dibaca dari.nuspec
file. - Jika tidak, file proyek yang dirujuk dibundel ke dalam paket. Kemudian proyek yang direferensikan oleh proyek ini akan diproses menggunakan aturan sames secara rekursif.
- Semua file DLL,
.pdb
, dan.exe
ditambahkan. - Semua file konten lainnya ditambahkan.
- Semua dependensi digabungkan.
Ini memungkinkan proyek yang direferensikan diperlakukan sebagai dependensi jika ada .nuspec
file, jika tidak, itu menjadi bagian dari paket.
Detail selengkapnya di sini: [http://nuget.codeplex.com/workitem/936](http://nuget.codeplex.com/workitem/936)
Atribut metadata baru yang disebut 'minClientVersion' sekarang dapat menunjukkan versi klien NuGet minimum yang diperlukan untuk menggunakan paket.
Fitur ini membantu penulis paket untuk menentukan bahwa paket hanya akan berfungsi setelah versi NuGet tertentu. Karena fitur baru .nuspec
ditambahkan setelah NuGet 2.5, paket akan dapat mengklaim versi NuGet minimum.
<metadata minClientVersion="2.6">
Jika pengguna menginstal NuGet 2.5 dan paket diidentifikasi membutuhkan 2.6, isyarat visual akan diberikan kepada pengguna yang menunjukkan paket tidak akan dapat diinstal. Pengguna kemudian akan dipandu untuk memperbarui versi NuGet mereka.
Ini akan meningkat setelah pengalaman yang ada di mana paket mulai diinstal tetapi kemudian gagal menunjukkan versi skema yang tidak dikenali diidentifikasi.
Sebelum NuGet 2.5, ketika paket diinstal yang bergantung pada paket yang sudah diinstal dalam proyek, dependensi akan diperbarui sebagai bagian dari penginstalan baru, bahkan jika versi yang ada memenuhi dependensi.
Dimulai dengan NuGet 2.5, jika versi dependensi sudah terpenuhi, dependensi tidak akan diperbarui selama penginstalan paket lainnya.
Skenario:
- Repositori sumber berisi paket B dengan versi 1.0.0 dan 1.0.2. Ini juga berisi paket A yang memiliki dependensi pada B (>= 1.0.0).
- Asumsikan bahwa proyek saat ini sudah menginstal paket B versi 1.0.0. Sekarang Anda ingin menginstal paket A.
Di NuGet 2.2 dan yang lebih lama:
- Saat menginstal paket A, NuGet akan memperbarui B secara otomatis ke 1.0.2, meskipun versi 1.0.0 yang ada sudah memenuhi batasan versi dependensi, yaitu >= 1.0.0.
Di NuGet 2.5 dan yang lebih baru:
- NuGet tidak akan lagi memperbarui B, karena mendeteksi bahwa versi 1.0.0 yang ada memenuhi batasan versi dependensi.
Untuk latar belakang lebih lanjut tentang perubahan ini, baca detail [work item](https://nuget.codeplex.com/workitem/1681)
serta yang terkait [discussion thread](https://nuget.codeplex.com/discussions/436712)
.
Jika Anda memecahkan masalah nuget.exe atau hanya ingin tahu permintaan HTTP apa yang dibuat selama operasi, sakelar '-verbosity terperinci' sekarang akan menghasilkan semua permintaan HTTP yang dibuat.
Sebelum NuGet 2.5, jika Anda mencoba menjalankan 'nuget.exe push' ke sumber paket berdasarkan jalur UNC atau folder lokal, pendorongan akan gagal. Dengan fitur konfigurasi hierarkis yang baru ditambahkan, menjadi umum bagi nuget.exe untuk perlu menargetkan sumber UNC/folder, atau Galeri NuGet berbasis HTTP.
Dimulai dengan NuGet 2.5, jika nuget.exe mengidentifikasi sumber UNC/folder, itu akan melakukan salinan file ke sumber.
Perintah berikut sekarang akan berfungsi:
nuget push -source \\mycompany\repo\ mypackage.1.0.0.nupkg
nuget.exe perintah yang mengakses konfigurasi (semua kecuali 'spesifikasi' dan 'paket') sekarang mendukung opsi '-ConfigFile' baru, yang memaksa file konfigurasi tertentu untuk digunakan sebagai pengganti file konfigurasi default di %AppData%\nuget\Nuget.Config.
Contoh:
nuget sources add -name test -source http://test -ConfigFile C:\test\.nuget\Nuget.Config
Dengan NuGet 2.5, alat NuGet sekarang tersedia untuk proyek Asli di Visual Studio. Kami mengharapkan sebagian besar paket asli akan menggunakan fitur impor MSBuild di atas, menggunakan alat yang dibuat oleh proyek CoApp. Untuk informasi selengkapnya, baca detail tentang alat di situs web coapp.org.
Nama kerangka kerja target "native" diperkenalkan untuk paket untuk menyertakan file dalam \build, \content, dan \tools ketika paket diinstal ke dalam proyek asli. Folder 'lib' tidak digunakan untuk proyek asli.