System.web.mvc eksik


90

Geçen haftaki güvenlik güncellemesinden bu yana derlenemeyen, VS2010'da oluşturulan eski bir ASP.NET MVC 3 Web Uygulamamız var.

Sorun, System.Web.Mvc.dll başvurusunun bozuk olmasıdır.

Güvenlik güncellemesinin çalışmadığı derleme makinemizde çözüm dosyasını açtığımda ve References-> System.Web.MVC için özellikler iletişim kutusunu açtığımda, gayet iyi görünüyor.

Yol C: \ Program Files \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dll Sürümü 3.0.0.0'dır

Ancak güvenlik güncellemesinin çalıştığı bir geliştirme makinesinde çözüm dosyasını açtığımda, References-> System.Web.MVC eksik olarak işaretleniyor. Kaldırırsam ve VS2010'un Referans Ekle iletişim kutusunu kullanarak tekrar eklemeye çalışırsam görünmez.

Web'de dolaşmak, NuGet kullanarak MVC'yi güncellemeyi içeren önerilere götürdü. VS2010 projelerimizde NuGet kullanmadık, bu nedenle bu durum için pek doğru görünmüyor. Yine de denedim ve yarım düzine eksik referansla sonuçlandı.

Windows Explorer'da "C: \ Program Files \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dll" özelliklerine baktığımda derleme makinesinde 3.0.0.0 sürümünü görüyorum.

Dev makinesindeki özelliklere baktığımda 3.0.50813.1 sürümünü görüyorum.

İhtiyacım olan şey, .NET 3.0 çerçevesinde yüklü olan bu iki DLL'den bağımsız olarak derleyip çalıştırabilmem için derleme ve çalıştırma yöntemimi değiştirmenin bir yolu.

Fikirler?

Denediğim şey işe yaramadı

İlk deneme - montaj eksikse ekleyin. Eski eksik referansı sildim. Sonra DLL'yi "ASP.NET MVC3 \ Assemblies" klasöründen projemdeki bir klasöre kopyaladım. "Her Zaman Kopyala" olarak ayarlayın ve referans olarak ekleyin.

Bununla proje VS2010'da derlenirdi, ancak sayfaları aspnet_compiler ile önceden derlemeye çalıştığımda uyarılar aldım:

(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

Şimdiye kadar, çalışma zamanı politikalarını anlamaktan kaçınmayı başardım, ancak bunu web.config dosyasına eklemeye çalıştım:

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

Tekrar denedim ve aynı uyarıları aldım.

Sorum şu - hala bir sorunum var mı? Yoksa uyarılara rağmen benim çözecek mi?


Tüm nuget paketlerini en son sürümlerine güncellemeyi denediniz mi (mümkünse elbette)?
Silvermind


1
Web uygulamasında nuget paketi yok. Ve evet, bu MS14-059 hatası.
Jeff Dege

Bunun yerine nuget paketini ve sürüm 4'ü kullanmama rağmen aynı soruna benzeyen bir şey yaşıyorum. İyi derliyor ve hepsi çalışıyor, ancak kurtulmak istediğim bu 20'den fazla derleme uyarısı var.
Farinha

Yanıtlar:


143

NuGet aracılığıyla MVC3'ün en son sürümünü edinin. Projenizi Dev Studio'da açın. Dev Studio'nun altındaki Paket Yöneticisi Konsolu sekmesini açın. Ardından şu komutu kullanın:

PM> Install-Package Microsoft.AspNet.Mvc -Version 3.0.50813.1

"-Version" dan sonra sekme tuşuna tıklarsanız, mevcut tüm sürümlerin bir listesini alırsınız.

NuGet'in eski bir sürümüne sahipseniz, yükseltmeniz gerektiğini belirten bir hata alabilirsiniz. Öyleyse, NuGet'in en son sürümünü yüklemek için Araçlar-> Uzantı Yöneticisi'ni açın. NuGet'i yüklemeden önce Dev Studio'yu Yönetici olarak çalıştırmanız gerekeceğini unutmayın.

MVC3'ü yüklemek, projenizdeki Web.config dosyasını güncellemelidir.

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

1
Badabing !!!! bunun için saatler harcadı ... sürümü Nuget pm'ye yüklemek için yeterince basit .... çok teşekkürler !!!
Squ1rr3lz

Evet, Nuget, Visual Studio 2010 ile çalışır. Yalnızca Extension Manager aracılığıyla yüklemeniz gerekir. Araçlar menüsünün altında.
3spot

2
Install-Package Microsoft.AspNet.Mvc sorunu çözecektir. Sürüm numarasını gerçekten belirtmemize gerek yok
sujay kodamala

2
@sujaykodamala Sürüm numarasını ayarlamak, MVC5'i (paketin en son sürümü) değil de en son MVC3'ü yüklemek istiyorsanız önemlidir.
nokta

Install-Package Microsoft.AspNet.Mvc -Project ProjectName -Reinstalldaha açık, o proje için sahip olduğunuz sürümü kurar ve diğer projelere dokunmasını engeller (istenirse).
Mike E

30

MVC 5

C: \ Program Dosyaları (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 Dosyaları (x86) \ Microsoft ASP.NET \ ASP.NET MVC 4 \ Assemblies \ System.Web.Mvc.dll

MVC 3

C: \ Program Dosyaları (x86) \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dll

MVC 2

C: \ Program Dosyaları (x86) \ Microsoft ASP.NET \ ASP.NET MVC 2 \ Assemblies \ System.Web.Mvc.dll

MVC 3 kurulu bir sistemde System.Web.MVC dll dosyasını nerede bulabilirim?


Teşekkürler bu, 2018 yılında VS2010 için hedeflenen projeyi açmama yardımcı oldu :)
Aamol

23

Bu sorunu çözmenin en kolay yolu, ASP.NET MVC 3'ü Web Platformları yükleyicisinden yüklemektir.

görüntü açıklamasını buraya girin

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

Veya Nuget komutunu kullanarak

Install-Package Microsoft.AspNet.Mvc -Version 3.0.50813.1

1
Bu, yeni bir PC'ye geçtikten ve yeni makineye henüz yüklemediğim ASP.NET MVC 4 dll'lerine referanslar içeren bir projemden sonra ortaya çıkan sorunumu çözdü.
clovola

3

VS 2017'de çözümü temizledim ve yeniden oluşturdum ve bu sorunu çözdü


2

Aynı duruma sahibim: Visual Studio 2010, yüklü NuGet yok ve System.Web.Mvc sürüm 3 kullanan bir ASP.NET uygulaması.

Benim için işe yarayan şey, System.Web.Mvc kullanan her C # projesini Çözüm Gezgini'ndeki Başvurular'a gitmek ve System.Web.Mvc'de Yerel Kopyala doğru ve Özel Sürüm'ü yanlış olarak ayarlamaktı - sonuncusu, Sürüm alanının o makinedeki mevcut sürümü göstermesine neden oldu.


1

Vs2017'de bu sorunu yaşadım, MVC'yi nuget aracılığıyla zaten aldım, ancak System.Web.Mvc "Add Reference" altındaki "Assemblies" listesinde görünmedi.

Çözüm, "Referans Ekle" iletişim kutusunda "Montajlar" altında "Uzantılar" ı seçmekti.


1

Sadece birinin aynı hatayı aldığı bir pozisyon olması durumunda. Benim durumumda Microsoft.AspNet.Mvc'i düşürmek ve ardından tekrar yükseltmek yardımcı oldu. Glimpse'i yükledikten ve kaldırdıktan sonra bu sorunu yaşadım. System.Web.Mvc bir şekilde yanlış referanslardı, çözümü temizlemek veya yeniden oluşturmak benim durumumda işe yaramadı. Yukarıdaki cevaplardan hiçbiri sizin için işe yaramazsa, deneyin.


0

Benim durumumda, projemdeki tüm uygun referanslara sahiptim. Çözümü oluşturarak nuget paketlerinin otomatik olarak geri yüklendiğini buldum.


0

Vs2015'te açılan mvcmusicstore.codeplex.com örneği bazı referansları kaçırdı, bunlardan biri System.web.mvc.

Bunun düzeltmesi, referanslardan kaldırmak ve bir referans eklemekti: Montajlar altında Uzantılar'ı seçin , orada System.Web.Mvc'yi bulabilir ve ekleyebilirsiniz.

(Nuget paketleri ile eklediğim diğer derlemeler.)


0

./Packages/Microsoft.AspNet.Mvc.[version]/lib/net45/System.Web.Mvc.dll adresinden referansı tekrar ekleyin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.