System.web.mvc fehlt

89

Wir haben eine alte ASP.NET MVC 3-Webanwendung, die in VS2010 erstellt wurde und seit dem Sicherheitsupdate der letzten Woche nicht mehr kompiliert werden kann.

Das Problem ist, dass der Verweis auf System.Web.Mvc.dll fehlerhaft ist.

Wenn ich die Lösungsdatei auf unserem Buildcomputer öffne, auf dem das Sicherheitsupdate nicht ausgeführt wurde, und den Eigenschaftendialog für Referenzen-> System.Web.MVC öffne, sieht es einwandfrei aus.

Der Pfad lautet C: \ Programme \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dll. Die Version ist 3.0.0.0

Wenn ich die Lösungsdatei auf einem Entwicklungscomputer öffne, auf dem das Sicherheitsupdate ausgeführt wurde, wird References-> System.Web.MVC als fehlend markiert. Wenn ich es entferne und versuche, es im Dialogfeld "Referenz hinzufügen" von VS2010 wieder hinzuzufügen, wird es nicht angezeigt.

Das Wandern im Internet hat mich zu Vorschlägen geführt, die MVC mit NuGet zu aktualisieren. Wir haben NuGet in unseren VS2010-Projekten nicht verwendet, daher scheint dies für diese Situation nicht ganz richtig zu sein. Ich habe es trotzdem versucht und am Ende ein halbes Dutzend fehlende Referenzen erhalten.

Wenn ich mir die Eigenschaften für "C: \ Programme \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dll" im Windows Explorer ansehe, wird auf dem Buildcomputer die Version 3.0.0.0 angezeigt.

Wenn ich mir die Eigenschaften auf dem Entwicklungscomputer ansehe, sehe ich Version 3.0.50813.1.

Was ich brauche, ist eine Möglichkeit, die Art und Weise zu ändern, in der ich baue und ausführe, damit ich unabhängig davon, welche dieser beiden DLLs im .NET 3.0-Framework installiert ist, erstellen und ausführen kann.

Ideen?

Was ich versucht habe, hat nicht funktioniert

Erster Versuch - Wenn die Baugruppe fehlt, fügen Sie sie hinzu. Ich habe die alte fehlende Referenz gelöscht. Dann habe ich die DLL aus dem Ordner "ASP.NET MVC3 \ Assemblies" in einen Ordner in meinem Projekt kopiert. Stellen Sie es als "Immer kopieren" ein und fügen Sie es als Referenz hinzu.

Damit würde das Projekt in VS2010 kompiliert, aber als ich versuchte, die Seiten mit aspnet_compiler vorkompilieren zu können, erhielt ich Warnungen:

(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

Bisher konnte ich vermeiden, Laufzeitrichtlinien zu verstehen, aber ich habe versucht, dies in der web.config hinzuzufügen:

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

Versuchte es noch einmal und bekam die gleichen Warnungen.

Meine Frage ist - habe ich noch ein Problem? Oder wird ich es trotz der Warnungen lösen?

Jeff Dege
quelle
Haben Sie versucht, alle Nuget-Pakete auf die neueste Version zu aktualisieren (wo möglich natürlich)?
Silvermind
1
Ich frage mich, ob Sie auf den MS14-059-Update-Fehler stoßen ...
Steven V
1
Die Web-App hat keine Nuget-Pakete. Und ja, es ist der MS14-059-Fehler.
Jeff Dege
Ich habe das gleiche Problem, obwohl ich stattdessen das Nuget-Paket und Version 4 verwende. Es kompiliert gut und alles funktioniert, aber es gibt diese über 20 Kompilierungswarnungen, die ich gerne loswerden würde.
Farinha

Antworten:

141

Holen Sie sich die neueste Version von MVC3 über NuGet. Öffnen Sie Ihr Projekt in Dev Studio. Öffnen Sie die Registerkarte Package Manager Console unten in Dev Studio. Verwenden Sie dann diesen Befehl:

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

Wenn Sie nach "-Version" auf die Tabulatortaste klicken, erhalten Sie eine Liste aller verfügbaren Versionen.

Wenn Sie eine alte Version von NuGet haben, wird möglicherweise eine Fehlermeldung angezeigt, dass Sie ein Upgrade durchführen müssen. Öffnen Sie in diesem Fall Tools-> Extension Manager, um die neueste Version von NuGet zu installieren. Beachten Sie, dass Sie Dev Studio als Administrator ausführen müssen, bevor Sie NuGet installieren können.

Durch die Installation von MVC3 sollte Web.config in Ihrem Projekt aktualisiert werden.

<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>
3spot
quelle
1
Bada Bing!!!! verbrachte Stunden damit ... einfach genug, um die Version in Nuget pm zu installieren ... vielen Dank !!!
Squ1rr3lz
Ja, Nuget funktioniert mit Visual Studio 2010. Sie müssen es nur über Extension Manager installieren. Unter dem Menü Extras.
3spot
2
Installationspaket Microsoft.AspNet.Mvc würde das Problem beheben. Wir müssen die Versionsnummer nicht wirklich erwähnen
Sujay Kodamala
2
@sujaykodamala Das Festlegen der Versionsnummer ist wichtig, wenn Sie die neueste MVC3 und nicht MVC5 (neueste Version des Pakets) installieren möchten.
3spot
Install-Package Microsoft.AspNet.Mvc -Project ProjectName -Reinstallist expliziter, installiert die Version, die Sie für dieses Projekt haben, und verhindert, dass es andere Projekte berührt (falls gewünscht).
Mike E
30

MVC 5

C: \ Programme (x86) \ Microsoft ASP.NET \ ASP.NET Web Stack 5 \ Pakete \ Microsoft.AspNet.Mvc.5.0.0 \ lib \ net45 \ System.Web.Mvc.dll

MVC 4

C: \ Programme (x86) \ Microsoft ASP.NET \ ASP.NET MVC 4 \ Assemblies \ System.Web.Mvc.dll

MVC 3

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

MVC 2

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

Wo finde ich die System.Web.MVC-DLL in einem System, in dem MVC 3 installiert ist?

Kirche
quelle
Vielen Dank, dies hat mir geholfen, ein Projekt für VS2010 im Jahr 2018 zu eröffnen :)
Aamol
23

Der einfachste Weg, um dieses Problem zu lösen, ist die Installation von ASP.NET MVC 3 über das Web Platforms-Installationsprogramm.

Geben Sie hier die Bildbeschreibung ein

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

Oder mit dem Befehl Nuget

Install-Package Microsoft.AspNet.Mvc -Version 3.0.50813.1
Md. Alim Ul Karim
quelle
1
Dies löste mein Problem, das auftrat, nachdem ich auf einen neuen PC gewechselt war und ein Projekt mit Verweisen auf die ASP.NET MVC 4-DLLs hatte, die ich noch nicht auf dem neuen Computer installiert hatte.
Clovola
3

In VS 2017 habe ich die Lösung gereinigt und neu erstellt, und das hat sie behoben

PBMe_HikeIt
quelle
2

Ich habe die gleiche Situation: Visual Studio 2010, kein NuGet installiert, und eine ASP.NET-Anwendung mit System.Web.Mvc Version 3.

Was für mich funktioniert hat, war, jedes C # -Projekt, das System.Web.Mvc verwendet, auf Verweise im Projektmappen-Explorer zu setzen und Eigenschaften für System.Web.Mvc festzulegen, wobei Copy Local auf true und Specific Version auf false - gesetzt wurden. Der letzte hat dazu geführt, dass im Feld Version die aktuelle Version auf diesem Computer angezeigt wurde.

Dronz
quelle
1

Hatte dieses Problem in vs2017, ich habe MVC bereits über Nuget erhalten, aber System.Web.Mvc wurde nicht in der Liste "Assemblies" unter "Add Reference" angezeigt.

Die Lösung bestand darin, "Erweiterungen" unter "Baugruppen" im Dialogfeld "Referenz hinzufügen" auszuwählen.

t_warsop
quelle
0

In meinem Fall hatte ich alle richtigen Referenzen in meinem Projekt. Ich fand heraus, dass beim Erstellen der Lösung die Nuget-Pakete automatisch wiederhergestellt wurden.

cal5barton
quelle
0

In dem in vs2015 geöffneten Beispiel mvcmusicstore.codeplex.com wurden einige Referenzen übersehen, darunter System.web.mvc.

Die Lösung hierfür bestand darin, es aus den Referenzen zu entfernen und eine Referenz hinzuzufügen: Wählen Sie Erweiterungen unter Baugruppen Erweiterungen. Dort können Sie System.Web.Mvc finden und hinzufügen.

(Die anderen Assemblys habe ich mit den Nuget-Paketen hinzugefügt.)

Bob Lokerse
quelle
0

Nur für den Fall, dass jemand eine Position hat, in der er den gleichen Fehler bekommt. In meinem Fall hat es geholfen, Microsoft.AspNet.Mvc herunterzustufen und dann erneut zu aktualisieren. Ich hatte dieses Problem, nachdem ich Glimpse installiert und entfernt hatte. System.Web.Mvc war irgendwie falsch referenziert, die Lösung zu reinigen oder neu zu erstellen hat in meinem Fall nicht funktioniert. Probieren Sie es einfach aus, wenn keine der oben genannten Antworten für Sie funktioniert.

Mehmet Can Erim
quelle
0

Fügen Sie die Referenz erneut aus ./packages/Microsoft.AspNet.Mvc.[version weiblicher/lib/net45/System.Web.Mvc.dll hinzu

Sajithd
quelle