it-swarm.com.de

System.web.mvc fehlt

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

Das Problem ist, dass der Verweis auf System.Web.Mvc.dll beschädigt ist. 

Wenn ich die Lösungsdatei auf unserer Build-Maschine öffne, auf der das Sicherheitsupdate nicht ausgeführt wurde, und den Eigenschaftendialog für Verweise -> System.Web.MVC öffne, sieht es gut 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 jedoch die Lösungsdatei auf einem Entwicklercomputer öffne, auf dem das Sicherheitsupdate ausgeführt wurde, wird "References-> System.Web.MVC" als fehlend gekennzeichnet. Wenn ich es entferne und versuche, es mit Hilfe des Dialogfelds "Referenz hinzufügen" von VS2010 wieder hinzuzufügen, wird es nicht angezeigt.

Durch das Web spazieren zu kommen, hat mich zu Vorschlägen für die Aktualisierung von MVC mit NuGet geführt. Wir haben NuGet in unseren VS2010-Projekten nicht verwendet, daher scheint das in dieser Situation nicht ganz richtig zu sein. Ich habe es trotzdem versucht, und am Ende fehlte ein halbes Dutzend fehlender Referenzen.

Wenn ich mir die Eigenschaften für "C:\Programme\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies\System.Web.Mvc.dll" in Windows Explorer ansehe, sehe ich auf der Build-Maschine Version 3.0.0.0.

Wenn ich mir die Eigenschaften auf der Dev-Maschine anschaue, sehe ich Version 3.0.50813.1.

Was ich brauche, ist eine Möglichkeit, die Art und Weise zu ändern, die ich baue und ausgeführt habe, sodass ich unabhängig von der beiden DLLs, die im .NET 3.0-Framework installiert sind, bauen 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. Legen Sie es als "Immer kopieren" fest und fügen Sie es als Referenz hinzu.

Damit würde das Projekt in VS2010 kompiliert, aber wenn ich die Seiten mit aspnet_compiler vorkompilieren wollte, bekam 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 es vermeiden, die 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 mein Problem trotz der Warnungen behoben?

69
Jeff Dege

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. Dann benutze 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, erhalten Sie möglicherweise eine Fehlermeldung, dass Sie ein Upgrade durchführen müssen. In diesem Fall öffnen Sie 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>
120
3spot

MVC 5

C:\Programme (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:\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 System.Web.MVC dll in einem System, auf dem MVC 3 installiert ist?

24
kirk

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

 enter image description here

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

Oder mit dem Nuget-Befehl

Install-Package Microsoft.AspNet.Mvc -Version 3.0.50813.1
16

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

Für mich war es gut, jedes C # -Projekt festzulegen, das System.Web.Mvc verwendet, um im Projektmappen-Explorer zu Verweisen zu gehen und Eigenschaften für System.Web.Mvc festzulegen, mit Copy Local auf true und Specific Version auf false Bei der letzten Version wurde im Feld Version die aktuelle Version auf diesem Computer angezeigt.

2
Dronz

in VS 2017 habe ich die Lösung gereinigt und neu aufgebaut und das Problem behoben

1
PBMe_HikeIt

Das in vs2015 eröffnete Beispiel mvcmusicstore.codeplex.com hat einige Referenzen verpasst, eine davon ist System.web.mvc.

Die Lösung für dieses Problem bestand darin, es aus den Verweisen zu entfernen und eine Referenz hinzuzufügen: Wählen Sie Extentions unter Assemblies aus, wo Sie System.Web.Mvc finden und hinzufügen können.

(Die anderen Baugruppen, die ich mit den Nuget-Paketen hinzugefügt habe.)

0
Bob Lokerse

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

0
cal5barton

Nur für den Fall, dass jemand eine Position hat, in der er den gleichen Fehler bekommt. In meinem Fall hat das Downgrade von Microsoft.AspNet.Mvc und das erneute Upgrade dann wieder geholfen. Ich hatte dieses Problem, nachdem ich Glimpse installiert und entfernt hatte. System.Web.Mvc war irgendwie falsch, das Säubern der Lösung oder das Wiederherstellen der Lösung funktionierte in meinem Fall nicht. Probieren Sie es einfach aus, wenn keine der oben genannten Antworten für Sie funktioniert.

0
Mehmet Can Erim

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

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

0
the_doc