System.web.mvc hilang

89

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?

Jeff Dege
sumber
Sudahkah Anda mencoba memperbarui semua paket nuget ke versi terbaru mereka (jika memungkinkan tentunya)?
Silvermind
1
Saya ingin tahu apakah Anda mengalami bug pembaruan MS14-059 ...
Steven V
1
Aplikasi web tidak memiliki paket nuget apa pun. Dan ya, itu adalah bug MS14-059.
Jeff Dege
Saya mengalami masalah yang sama, meskipun saya menggunakan paket nuget dan versi 4 sebagai gantinya. Ini dikompilasi dengan baik, dan semuanya berfungsi, tetapi ada 20+ peringatan kompilasi yang ingin saya singkirkan.
Farinha

Jawaban:

141

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>
3 titik
sumber
1
Badabing !!!! menghabiskan berjam-jam untuk ini ... cukup sederhana untuk menginstal versi di Nuget pm .... terima kasih banyak !!!
Squ1rr3lz
Ya, Nuget bekerja dengan Visual Studio 2010. Anda hanya perlu menginstalnya melalui Extension Manager. Di bawah menu Alat.
3spot
2
Install-Package Microsoft.AspNet.Mvc akan memperbaiki masalah ini. Kami tidak perlu menyebutkan nomor versinya
sujay kodamala
2
@sujaykodamala Menetapkan nomor versi penting jika Anda ingin menginstal MVC3 terbaru dan bukan MVC5 (versi paket terbaru).
3spot
Install-Package Microsoft.AspNet.Mvc -Project ProjectName -Reinstalllebih eksplisit, menginstal versi yang Anda miliki untuk proyek itu dan mencegahnya menyentuh proyek lain (jika diinginkan).
Mike E
30

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?

gereja
sumber
Terima kasih ini membantu saya untuk membuka proyek yang ditargetkan untuk VS2010 pada tahun 2018 :)
Aamol
23

Cara termudah untuk mengatasi masalah ini adalah menginstal ASP.NET MVC 3 dari penginstal Platform Web.

masukkan deskripsi gambar di sini

http://www.microsoft.com/web/downloads/

Atau dengan menggunakan perintah Nuget

Install-Package Microsoft.AspNet.Mvc -Version 3.0.50813.1
Md. Alim Ul Karim
sumber
1
Ini menyelesaikan masalah saya yang muncul setelah saya beralih ke PC baru dan memiliki proyek dengan referensi ke dll ASP.NET MVC 4 yang belum saya instal di komputer baru.
clovola
3

di VS 2017 saya membersihkan solusi dan membangunnya kembali dan memperbaikinya

PBMe_HikeIt
sumber
2

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.

Dronz
sumber
1

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".

t_warsop
sumber
0

Dalam kasus saya, saya memiliki semua referensi yang tepat dalam proyek saya. Saya menemukan bahwa dengan membangun solusi, paket nuget secara otomatis dipulihkan.

cal5barton.dll
sumber
0

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.)

Bob Lokerse
sumber
0

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.

Mehmet Can Erim
sumber
0

Tambahkan referensi lagi dari ./packages/Microsoft.AspNet.Mvc.[version]/lib/net45/System.Web.Mvc.dll

Sajithd
sumber