Apakah ada cara untuk memperbarui nuget.exe secara otomatis di folder .nuget saat menggunakan pemulihan paket?

92

Tim saya telah menggunakan opsi Aktifkan Pemulihan Paket sejak Nuget 1.5 untuk menjaga paket di luar kendali sumber kami. Ketika Nuget 1.6 dirilis, kami menemukan masalah di mana ia tidak menarik paket ke bawah, dan melacaknya ke Nuget.exe di folder .nuget perlu diperbarui ke 1.6 agar sesuai dengan Package Manager.

Apa cara terbaik untuk memperbarui solusi setelah Nuget didekati? Saya tidak melihat cara mudah dari studio untuk mengetahui versi nuget mana yang ada di folder solusi. Sejauh ini kami menghapus folder .nuget dan menjalankan kembali perintah Enable Package Restore.

Rick
sumber

Jawaban:

148

Saya menyarankan memperbarui .nuget \ nuget.exe dengan perintah ini dari baris perintah:

nuget.exe update -self

[EDIT]: Tutup VS Solution terlebih dahulu. Jika ada pembaruan dan solusinya dibuka, nuget.exe akan dihapus dari solusi.

Anda dapat secara otomatis memperbarui nuget.exe saat pemulihan dengan memodifikasi .nuget \ nuget.t target untuk menambahkan perintah di atas. Saya akan melihat perintah pemulihan di sana sebagai contoh. Tetapi saya tidak yakin apakah itu sepadan, pembaruan nuget.exe tidak begitu umum, dan kompatibilitas mundur akan sangat jarang rusak.

Alexandre Dion
sumber
Saya mencoba ini di salah satu proyek saya. Ini memperbarui NuGet.exe tetapi tampaknya telah menghapusnya dari solusi saya. Saya tahu saya bisa menambahkannya kembali, tapi itu tampak aneh.
Rick
Ah benar, saya mencoba pembaruan nyata kali ini dan nuget.exe juga dihapus dari solusi VS untuk saya. (Saya tidak mendapatkannya sebelumnya karena nuget.exe adalah yang terbaru). Itu terjadi karena selama pembaruan nuget.exe saat ini dipindahkan ke nuget.exe.old terlebih dahulu sehingga referensi file rusak. Saya ragu ini akan diperbaiki, saya akan menjalankan perintah dengan solusi ditutup.
Alexandre Dion
Sepertinya melakukan pembaruan sendiri tidak akan memberi Anda file NuGet.t target baru, yang mungkin menjadi masalah. Saya pikir tim NuGet membuat beberapa perubahan pada file target antara versi 1.6 dan 1.7.
William Gross
@William Gross, Anda dapat memeriksa apakah ada pembaruan ke nuget.org/packages/NuGet.Build (itu adalah paket yang berisi nuget.target)
Alexandre Dion
bekerja untuk saya, ingatlah untuk menjalankan cmd sebagai administrator
Mohammad
31

Saya telah menemukan cara terbaik untuk menangani ini adalah dengan hanya menghapus folder .nuget dan mengaktifkan kembali solusi pemulihan paket lebar. Seperti yang dikatakan di atas, Anda dapat menambahkan perintah pembaruan sendiri ke build Anda, tetapi itu tidak akan memperbarui file target atau konfigurasi jika ada perubahan antar versi (atau menghapus referensi dari solusi Anda). Mungkin ini bukan masalah besar, tetapi ini adalah cara yang pasti untuk memastikan Anda memiliki file exe dan konfigurasi terbaru. Dan pada akhirnya, memperbarui hanya menjadi masalah jika Anda memerlukan akses ke perintah baru atau pada akhirnya ada perubahan yang mengganggu dalam rilis baru.

Chris Kirby
sumber
3
1 - Saya telah menemukan bahwa ini adalah cara terbaik untuk mendapatkan update ke NuGet.exe serta dalam NuGet.targetsberkas (yang juga penting). Pastikan Anda menyimpan kustomisasi yang telah Anda buat ke NuGet.targetsfile (mis. PackageSources kustom) sehingga Anda dapat menerapkannya kembali ke file baru.
Jesse Webb
bagus yang bekerja untuk saya seperti pesona !! terima kasih atas informasinya
Gayan
-3

Lihat postingan David Ebbo di blognya

Pada dasarnya, Yang perlu Anda lakukan adalah membuat file NuGet.Config di sebelah file .sln Anda, yang berisi:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear/>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
    <add key="aspnetwebstacknightlyrelease" value="https://www.myget.org/f/aspnetwebstacknightlyrelease/" />
  </packageSources>
</configuration>
Rodolpho Brock
sumber
1
Pertanyaannya menanyakan bagaimana memperbarui nuget.exe secara otomatis ke versi terbaru saat menggunakan pemulihan paket. Posting blog David Ebbo hanya menjelaskan cara memulihkan paket menggunakan nuget.exe.
Frith
Anda mungkin harus menentukan bagian mana dari pertanyaan yang Anda jawab, ketika melihat judul pertanyaan dan jawaban yang diterima, mudah untuk menganggap jawaban ini salah tempat ...
Jens