Kami memiliki Aplikasi Web ASP.NET MVC 3 lama, yang dibangun di VS2010, yang gagal untuk dikompilasi, sejak pembaruan keamanan minggu lalu.
Masalahnya adalah bahwa referensi ke System.Web.Mvc.dll rusak.
Ketika saya membuka file solusi pada mesin build kami, di mana pembaruan keamanan belum berjalan, dan membuka dialog properti untuk Referensi-> System.Web.MVC, sepertinya baik-baik saja.
Jalurnya adalah C: \ Program Files \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dll Versi 3.0.0.0
Tetapi ketika saya membuka file solusi pada mesin dev tempat pembaruan keamanan telah berjalan, Referensi-> System.Web.MVC ditandai sebagai hilang. Jika saya menghapusnya, dan mencoba menambahkannya kembali menggunakan dialog Tambahkan Referensi VS2010, itu tidak muncul.
Berkeliaran di web telah membawa saya pada saran yang melibatkan pembaruan MVC menggunakan NuGet. Kami tidak menggunakan NuGet, dalam proyek VS2010 kami, jadi tampaknya kurang tepat, untuk situasi ini. Saya tetap mencobanya, dan berakhir dengan setengah lusin referensi yang hilang.
Ketika saya melihat properti untuk "C: \ Program Files \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dll" di Windows Explorer, pada mesin build saya melihat versi 3.0.0.0.
Ketika saya melihat properti pada mesin dev, saya melihat versi 3.0.50813.1.
Yang saya perlukan adalah cara untuk mengubah cara saya membangun dan menjalankan sehingga saya dapat membangun dan menjalankan terlepas dari mana dari dua DLL ini yang diinstal dalam kerangka .NET 3.0.
Ide ide?
Apa yang telah saya coba ternyata tidak berhasil
Upaya pertama - jika rakitan hilang, tambahkan. Saya menghapus referensi lama yang hilang. Kemudian saya menyalin DLL dari folder "ASP.NET MVC3 \ Assemblies", ke dalam folder di proyek saya. Setel sebagai "Salin Selalu", dan tambahkan sebagai referensi.
Dengan itu, proyek akan dikompilasi di VS2010, tetapi ketika saya mencoba untuk mengkompilasi halaman dengan aspnet_compiler, saya mendapat peringatan:
(0): warning CS1702: Assuming assembly reference 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' matches 'System.Web.Mvc, Version=3.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35', you may need to supply runtime policy
Sejauh ini, saya dapat menghindari pemahaman kebijakan runtime, tetapi saya mencoba menambahkan ini, di web.config:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.1" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Mencoba lagi, dan mendapat peringatan yang sama.
Pertanyaan saya adalah - apakah saya masih punya masalah? Atau akankah saya menyelesaikannya, terlepas dari peringatannya?
sumber
Jawaban:
Dapatkan MVC3 versi terbaru melalui NuGet. Buka proyek Anda di Dev Studio. Buka tab Package Manager Console di bagian bawah Dev Studio. Kemudian gunakan perintah ini:
PM> Install-Package Microsoft.AspNet.Mvc -Version 3.0.50813.1
Jika Anda mengklik tombol tab setelah "-Version", Anda akan mendapatkan daftar dari semua versi yang tersedia.
Jika Anda memiliki NuGet versi lama Anda mungkin mendapatkan pesan kesalahan yang menunjukkan Anda harus meningkatkannya. Jika demikian, buka Tools-> Extension Manager untuk menginstal versi terbaru NuGet. Catatan, Anda harus menjalankan Dev Studio sebagai Administrator sebelum Anda dapat menginstal NuGet.
Menginstal MVC3 harus memperbarui Web.config di proyek Anda.
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="0.0.0.0-3.0.0.1" newVersion="3.0.0.1" /> </dependentAssembly> </assemblyBinding>
sumber
Install-Package Microsoft.AspNet.Mvc -Project ProjectName -Reinstall
lebih eksplisit, menginstal versi yang Anda miliki untuk proyek itu dan mencegahnya menyentuh proyek lain (jika diinginkan).MVC 5
C: \ Program Files (x86) \ Microsoft ASP.NET \ ASP.NET Web Stack 5 \ Packages \ Microsoft.AspNet.Mvc.5.0.0 \ lib \ net45 \ System.Web.Mvc.dll
MVC 4
C: \ Program Files (x86) \ Microsoft ASP.NET \ ASP.NET MVC 4 \ Assemblies \ System.Web.Mvc.dll
MVC 3
C: \ Program Files (x86) \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dll
MVC 2
C: \ Program Files (x86) \ Microsoft ASP.NET \ ASP.NET MVC 2 \ Assemblies \ System.Web.Mvc.dll
Di mana saya dapat menemukan dll System.Web.MVC dalam sistem di mana MVC 3 diinstal?
sumber
Cara termudah untuk mengatasi masalah ini adalah menginstal ASP.NET MVC 3 dari penginstal Platform Web.
http://www.microsoft.com/web/downloads/
Atau dengan menggunakan perintah Nuget
Install-Package Microsoft.AspNet.Mvc -Version 3.0.50813.1
sumber
di VS 2017 saya membersihkan solusi dan membangunnya kembali dan memperbaikinya
sumber
Saya memiliki situasi yang sama: Visual Studio 2010, NuGet tidak diinstal, dan aplikasi ASP.NET menggunakan System.Web.Mvc versi 3.
Apa yang berhasil bagi saya, adalah mengatur setiap proyek C # yang menggunakan System.Web.Mvc, pergi ke Referensi di Solution Explorer, dan mengatur properti di System.Web.Mvc, dengan Salin Lokal ke true, dan Versi Spesifik ke salah - yang terakhir menyebabkan bidang Versi menampilkan versi saat ini di mesin itu.
sumber
Punya masalah ini di vs2017, saya sudah mendapat MVC melalui nuget tetapi System.Web.Mvc tidak muncul di daftar "Assemblies" di bawah "Tambahkan Referensi".
Solusinya adalah dengan memilih "Extensions" di bawah "Assemblies" dalam dialog "Add Reference".
sumber
Dalam kasus saya, saya memiliki semua referensi yang tepat dalam proyek saya. Saya menemukan bahwa dengan membangun solusi, paket nuget secara otomatis dipulihkan.
sumber
Contoh mvcmusicstore.codeplex.com yang dibuka di vs2015 melewatkan beberapa referensi, salah satunya System.web.mvc.
Perbaikan untuk ini adalah menghapusnya dari referensi dan menambahkan referensi: pilih Extentions di bawah Assemblies, di sana Anda dapat menemukan dan menambahkan System.Web.Mvc.
(Rakitan lain saya tambahkan dengan paket nuget.)
sumber
Untuk berjaga-jaga jika seseorang berada dalam posisi di mana dia mendapatkan kesalahan yang sama. Dalam kasus saya, menurunkan Microsoft.AspNet.Mvc dan kemudian memutakhirkannya lagi membantu. Saya mengalami masalah ini setelah menginstal Glimpse dan menghapusnya. System.Web.Mvc adalah referensi yang salah, membersihkan solusi atau membangunnya kembali tidak berhasil dalam kasus saya. Coba saja jika tidak ada jawaban di atas yang berhasil untuk Anda.
sumber
Tambahkan referensi lagi dari ./packages/Microsoft.AspNet.Mvc.[version]/lib/net45/System.Web.Mvc.dll
sumber