Saya telah memigrasikan solusi yang saat ini menargetkan .NET 4.0 di VS2010 ke VS2012 dan sekarang saya ingin menargetkan kembali ke .Net 4.5
Yang tidak saya yakini adalah paket NuGet. Misalnya EF5, yang saya perbarui dari EF4 di VS2010 ternyata benar-benar EF 4.4 seperti yang Anda lihat di sini:
<Reference Include="EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll</HintPath>
</Reference>
Saya juga dapat melihat yang berikut ini di packages.config untuk proyek:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="5.0.0" targetFramework="net40" />
</packages>
Jadi pertanyaan saya adalah:
Apa praktik terbaik untuk menargetkan kembali semua paket NuGet yang saat ini ditetapkan ke target .NET 4.0 untuk menargetkan .NET 4.5?
.net
nuget
visual-studio-2012
.net-4.5
Ivan Zlatev
sumber
sumber
Jawaban:
NuGet 2.1 menawarkan fitur yang membuat ini lebih sederhana: lakukan saja
update-package -reinstall -ignoreDependencies
dari Package Manager Console.NuGet 2.0 tidak menangani penargetan ulang aplikasi Anda dengan sangat baik. Untuk mengubah kerangka target paket Anda, Anda harus menghapus dan menginstal ulang paket (perhatikan paket yang telah Anda instal sehingga Anda dapat menginstal ulang masing-masing).
Alasan paket harus dihapus dan diinstal ulang adalah:
sumber
update-package -reinstall
di Package Manager Console. Semua paket mulai dihapus dan diperbarui dan tiba-tiba Windows 8 dimulai kembali dan ketika kembali ia memberi tahu "PC Anda mengalami masalah dan restart. Apakah Anda ingin mengirim informasi ke Microsoft?" :( Takut ... Ngomong-ngomong, ini adalah versi NuGet yang saya instal sekarang:2.2.40116.9051
Membuka masalah di sini: nuget.codeplex.com/workitem/3049Bagi mereka yang memiliki masalah dengan
update-package -reinstall <packagename>
perintah, pertimbangkan untuk menjalankannya dengan-ignoreDependencies
flag, seperti ini:Bendera ini akan membiarkan dependensi paket Anda sendiri, jika tidak mereka mungkin akan diperbarui bahkan jika paket yang Anda ingin instal ulang tetap mempertahankan versinya.
Info lebih lanjut di sini .
sumber
get-package | % { update-package $_.Id -reinstall -ProjectName $_.ProjectName -ignoreDependencies }
Setelah mencoba jawaban yang diterima tidak berhasil saya ingin menyarankan perintah yang kurang berisiko:
Untuk info lebih lanjut: http://blog.nuget.org/20121231/a-quick-tutorial-on-update-package-command.html
sumber
-reinstall
hanya akan menginstal versi yang sama, jadi tidak melihat manfaat apa pun untuk digunakan-safe
. Apakah saya melewatkan sesuatu?Sementara mencoba untuk menginstal ulang solusi paket lebar, saya mengalami kesalahan ketergantungan (meskipun menggunakan
-ignoreDependencies
bendera), dan semua packages.config file untuk setiap proyek telah dihapus. Dalam VS2013, tampaknya packages.config tidak mendapatkan memerah kembali ke disk dan re-ditambahkan sampai semua dependensi upgrade / referensi yang re-melekat pada proyek tersebut.Dalam kasus saya apa yang bekerja adalah untuk meng-upgrade setiap proyek satu-di-a-waktu dengan menambahkan
-ProjectName
projectname keupdate-package
perintah. Dalam hal ini paket.config diperbarui karena setiap proyek ditingkatkan.Mungkin tidak praktis untuk solusi yang sangat besar tetapi tampaknya kompromi yang masuk akal untuk tetap mengambil keuntungan dari peningkatan otomatis untuk sebanyak mungkin proyek dan mengisolasi yang bermasalah tanpa setiap paket. Konfigurasikan dalam solusi Anda dihapus pada kegagalan.
sumber
UpdatePackage -Reinstall
menghapus package.config dan referensi proyek untuk beberapa proyek (khususnya yang memiliki kumpulan palsu yang dihasilkan di dalamnya). Kami mengatasi ini dengan membatalkan semua perubahan pada proyek yang kacau dan menjalankan:Update-Package -reinstall -ProjectName "PROJECTNAME" -IgnoreDependencies
Dengan Visual Studio untuk Mac 2019, mengklik kanan folder Paket menunjukkan opsi 'Retarget' di menu. Ini menyelesaikan masalah penargetan ulang untuk semua paket dalam proyek yang membutuhkan penargetan ulang. Sepertinya tidak ada Package Manager NuGet di bawah menu Tools di Visual Studio for Mac (minimal milik saya), jadi saya tidak bisa meluncurkan Package Manager Console.
sumber