Catatan Rilis NuGet 2.1
Catatan Rilis NuGet 2.0 Catatan Rilis | NuGet 2.2
NuGet 2.1 dirilis pada 4 Oktober 2012.
NuGet 2.1 memberi Anda fleksibilitas yang lebih besar dalam mengontrol pengaturan NuGet dengan cara menjalankan struktur folder secara rekursif mencari NuGet.Config
file dan kemudian membangun konfigurasi dari kumpulan semua file yang ditemukan. Sebagai contoh, pertimbangkan skenario di mana tim memiliki repositori paket internal untuk build CI dari dependensi internal lainnya. Struktur folder untuk proyek individual mungkin terlihat seperti berikut ini:
C:\
C:\myteam\
C:\myteam\solution1
C:\myteam\solution1\project1
Selain itu, jika pemulihan paket diaktifkan untuk solusi, folder berikut juga akan ada:
C:\myteam\solution1\.nuget
Agar repositori paket internal tim tersedia untuk semua proyek tempat tim bekerja, sementara tidak membuatnya tersedia untuk setiap proyek di komputer, kita dapat membuat file Nuget.Config baru dan menempatkannya di folder c:\myteam. Tidak ada cara untuk menentukan folder paket per proyek.
<configuration>
<packageSources>
<add key="Official project team source" value="http://teamserver/api/v2/" />
</packageSources>
<disabledPackageSources />
<activePackageSource>
<add key="Official project team source" value="http://teamserver/api/v2/" />
</activePackageSource>
</configuration>
Sekarang kita dapat melihat bahwa sumber ditambahkan dengan menjalankan perintah 'sumber nuget.exe' dari folder mana pun di bawah c:\myteam seperti yang ditunjukkan di bawah ini:
NuGet.Config
file dicari dalam urutan berikut:
.nuget\Nuget.Config
- Berjalan rekursif dari folder proyek ke root
- Global
Nuget.Config
(%appdata%\NuGet\Nuget.Config
)
Konfigurasi ini daripada yang diterapkan dalam urutan terbalik, yang berarti bahwa berdasarkan urutan di atas, Nuget.Config global akan diterapkan terlebih dahulu, diikuti oleh file Nuget.Config yang ditemukan dari folder root ke proyek, diikuti oleh .nuget\Nuget.Config
. Ini sangat penting jika Anda menggunakan <clear/>
elemen untuk menghapus sekumpulan item dari konfigurasi.
Di masa lalu, NuGet telah mengelola paket solusi dari folder 'paket' yang diketahui yang ditemukan di bawah folder akar solusi. Untuk tim pengembangan yang memiliki banyak solusi berbeda yang memiliki paket NuGet yang terinstal, ini dapat mengakibatkan paket yang sama diinstal di banyak tempat berbeda pada sistem file.
NuGet 2.1 memberikan kontrol yang lebih terperinci atas lokasi folder paket melalui repositoryPath
elemen dalam NuGet.Config
file. Membangun contoh dukungan Nuget.Config hierarkis sebelumnya, asumsikan bahwa kami ingin memiliki semua proyek di bawah C:\myteam\ berbagi folder paket yang sama. Untuk mencapai hal ini, cukup tambahkan entri berikut ke c:\myteam\Nuget.Config
.
<configuration>
<config>
<add key="repositoryPath" value="C:\myteam\teampackages" />
</config>
...
</configuration>
Dalam contoh ini, file bersama Nuget.Config
menentukan folder paket bersama untuk setiap proyek yang dibuat di bawah C:\myteam, terlepas dari kedalamannya. Perhatikan bahwa jika Anda memiliki folder paket yang ada di bawah akar solusi Anda, Anda perlu menghapusnya sebelum NuGet akan menempatkan paket di lokasi baru.
Pustaka portabel adalah fitur yang pertama kali diperkenalkan dengan .NET 4 yang memungkinkan Anda membuat rakitan yang dapat berfungsi tanpa modifikasi pada platform Microsoft yang berbeda, dari versi the.NET Framework ke Silverlight ke Windows Telepon dan bahkan Xbox 360 (meskipun saat ini, NuGet tidak mendukung target pustaka portabel Xbox). Dengan memperluas konvensi paket untuk versi dan profil kerangka kerja, NuGet 2.1 sekarang mendukung pustaka portabel dengan memungkinkan Anda membuat paket yang memiliki kerangka kerja campuran dan folder target lib
profil.
Sebagai contoh, pertimbangkan platform target pustaka kelas portabel berikut yang tersedia.
Setelah pustaka dibangun dan perintah nuget.exe pack MyPortableProject.csproj
dijalankan, struktur folder paket pustaka portabel baru dapat dilihat dengan memeriksa konten paket NuGet yang dihasilkan.
Seperti yang Anda lihat, konvensi nama folder pustaka portabel mengikuti pola 'portable-{framework 1}+{framework n}' di mana pengidentifikasi kerangka kerja mengikuti nama kerangka kerja dan konvensi versi yang ada. Satu pengecualian untuk konvensi nama dan versi ditemukan dalam pengidentifikasi kerangka kerja yang digunakan untuk Windows Telepon. Moniker ini harus menggunakan nama kerangka kerja 'wp' (wp7, wp71 atau wp8). Menggunakan 'silverlight-wp7', misalnya, akan mengakibatkan kesalahan.
Saat menginstal paket yang dibuat dari struktur folder ini, NuGet sekarang dapat menerapkan aturan kerangka kerja dan profilnya ke beberapa target, seperti yang ditentukan dalam nama folder. Di balik aturan pencocokan NuGet adalah prinsip bahwa target "lebih spesifik" akan lebih diutamakan daripada yang "kurang spesifik". Ini berarti bahwa moniker yang menargetkan platform tertentu akan selalu disukai daripada yang portabel jika keduanya kompatibel dengan proyek. Selain itu, jika beberapa target portabel kompatibel dengan proyek, NuGet akan lebih memilih salah satu di mana set platform yang didukung "paling dekat" dengan proyek yang mereferensikan paket.
Selain menambahkan dukungan untuk menargetkan proyek pustaka portabel, NuGet 2.1 menyediakan moniker kerangka kerja baru untuk proyek Windows 8 Store dan Windows Telepon 8, serta beberapa moniker umum baru untuk Windows Store dan Windows Telepon proyek yang akan lebih mudah dikelola di seluruh versi platform di masa mendatang.
Untuk aplikasi Windows 8 Store, pengidentifikasi terlihat sebagai berikut:
NuGet 2.0 dan yang lebih lama | NuGet 2.1 |
---|---|
winRT45, . NETCore45 | Windows, Windows8, win, win8 |
Untuk proyek Windows Telepon, pengidentifikasi terlihat sebagai berikut:
OS Telepon | NuGet 2.0 dan yang lebih lama | NuGet 2.1 |
---|---|---|
Windows Telepon 7 | silverlight3-wp | wp, wp7, Windows Telepon, Windows Telepon 7 |
Windows Telepon 7.5 (Mangga) | silverlight4-wp71 | wp71, Windows Telepon 71 |
Windows Phone 8 | (tidak didukung) | wp8, Windows Telepon 8 |
Dalam semua perubahan di atas, nama kerangka kerja lama akan terus didukung sepenuhnya oleh NuGet 2.1. Ke depannya, nama-nama baru harus digunakan karena akan lebih stabil di seluruh versi platform yang akan datang. Nama baru akan *tidak* didukung dalam versi NuGet sebelum 2.1, jadi rencanakan kapan harus beralih.
Selama beberapa iterasi sebelumnya, perubahan telah diperkenalkan ke galeri NuGet yang sangat meningkatkan kecepatan dan relevansi pencarian paket. Namun, peningkatan ini terbatas pada situs Web nuget.org. NuGet 2.1 membuat pengalaman pencarian yang ditingkatkan tersedia melalui dialog manajer paket NuGet. Sebagai contoh, bayangkan Anda ingin menemukan paket Pratinjau Penembolokan Windows Azure. Kueri pencarian yang wajar untuk paket ini mungkin adalah "Azure Cache". Dalam versi dialog manajer paket sebelumnya, paket yang diinginkan bahkan tidak akan tercantum di halaman pertama hasil. Namun, di NuGet 2.1, paket yang diinginkan sekarang muncul di bagian atas hasil pencarian.
Sebelum NuGet 2.1, NuGet akan melewati pembaruan paket ketika ada nomor versi yang tidak tinggi. Ini memperkenalkan gesekan untuk skenario tertentu - terutama dalam kasus skenario build atau CI di mana tim tidak ingin menaikkan nomor versi paket dengan setiap build. Perilaku yang diinginkan adalah memaksa pembaruan terlepas dari itu. NuGet 2.1 membahas ini dengan bendera 'instal ulang'. Misalnya, versi NuGet sebelumnya akan menghasilkan hal berikut saat mencoba memperbarui paket yang tidak memiliki versi paket yang lebih baru:
PM> Update-Package Moq
No updates available for 'Moq' in project 'MySolution.MyConsole'.
Dengan bendera penginstalan ulang, paket akan diperbarui terlepas dari apakah ada versi yang lebih baru.
PM> Update-Package Moq -Reinstall
Successfully removed 'Moq 4.0.10827' from MySolution.MyConsole.
Successfully uninstalled 'Moq 4.0.10827'.
Successfully installed 'Moq 4.0.10827'.
Successfully added 'Moq 4.0.10827' to MySolution.MyConsole.
Skenario lain di mana bendera penginstalan ulang terbukti bermanfaat adalah penargetan ulang kerangka kerja. Saat mengubah kerangka kerja target proyek (misalnya, dari .NET 4 ke .NET 4.5), Pembaruan-Paket -Instal ulang dapat memperbarui referensi ke rakitan yang benar untuk semua paket NuGet yang diinstal dalam proyek.
Di versi NuGet sebelumnya, memperbarui sumber paket dari dalam dialog opsi Visual Studio diperlukan untuk menghapus dan menambahkan kembali sumber paket. NuGet 2.1 meningkatkan alur kerja ini dengan mendukung pembaruan sebagai fungsi kelas pertama dari antarmuka pengguna konfigurasi.
NuGet 2.1 mencakup banyak perbaikan bug. Untuk daftar lengkap item kerja yang diperbaiki di NuGet 2.0, silakan lihat [NuGet Issue Tracker for this release](http://nuget.codeplex.com/workitem/list/advanced?keyword=&status=Fixed&type=All&priority=All&release=NuGet%202.1&assignedTo=All&component=All&sortField=LastUpdatedDate&sortDirection=Descending&page=0)
.