Ich habe in den letzten Monaten an einer mvc4-Webanwendung gearbeitet. Alles funktionierte gut bis Freitag, als ich ein Update-Paket in Nuget ausführte, um sicherzustellen, dass ich die neuesten Versionen meiner Bibliotheken hatte.
Jetzt, wenn ich versuche, etwas in der Anwendung zu sehen, sagt es mir, dass es den Fehler erhält
Could not load file or assembly 'System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Ich habe meine web.config und meine packages.config überprüft und nirgends verweise ich auf System.Web.WebPages.Razor, Version=3.0.0.0
Ich habe meiner web.config mit der Version 2.0.0.0 einen dependentAssembly-Block hinzugefügt
%Vor%und stellte sicher, dass die Datei web.config in meinem Sichtenverzeichnis auch v2.0.0.0
angibt %Vor%Ich habe auch sichergestellt, dass die Version, auf die in meinen Referenzen verwiesen wird, 2.0.0.0 ist. Ich habe versucht, es zu entfernen und es zu lesen. Ich habe versucht sicherzustellen, dass auf dem Server die neueste Version des .NET Framework installiert ist.
Ich habe das sowohl auf dem Server als auch lokal getestet und bekomme die gleiche Fehlermeldung.
Lokal sehe ich das im Fehlerprotokoll LOG: Post-policy reference: System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Aber ich kann keine Informationen darüber finden, was das verursacht.
Ich entwickle es in Visual Studio 2012 Premium.
Hat jemand Ideen?
Ich habe meine web.config und meine packages.config überprüft und nirgends verweise ich auf System.Web.WebPages.Razor, Version = 3.0.0.0
Das ist dein Problem. Ich bin ein paar Mal selbst auf ähnliche Probleme gestoßen. Dies geschieht jedoch meistens, wenn mehrere Projekte in einer Lösung behandelt werden. Ich bin mir nicht sicher, ob das in Ihrem Fall zutrifft. Dennoch läuft das Problem darauf hinaus, dass die aktuelle Projektreferenz "aktualisiert" wurde, aber Ihre web.config und packages.config nicht auf dieses aktualisierte Paket verweisen. Wenn Sie in Ihre Projektreferenzen gehen und Eigenschaften auf der Rasiermesserreferenz sehen, wette ich Dollar zu den Groschen, die dort 3.0.0.0 sagt. Sie können entweder den Verweis entfernen und ihn erneut hinzufügen, indem Sie das Verzeichnis bin des niedrigeren versionierten Pakets durchsuchen oder es vollständig aktualisieren.
Wie ich bereits sagte, tritt dies normalerweise in Multiprojektlösungen auf, wenn Sie ein Projekt, aber nicht ein anderes aktualisieren. Der einfachste Weg, dies zu beheben, ist das Verwalten von Nuget-Paketen für die gesamte Lösung. Sie werden dann wahrscheinlich mehrere Auflistungen für Razor sehen, wo eines für ein oder mehrere Projekte überprüft wird, aber nicht für einige und umgekehrt. Entfernen Sie die ältere Version von Razor (deaktivieren Sie die zugehörigen Projekte) für die ältere Version und übernehmen Sie sie. Dann gehe zurück zu der neuen Version von Razor und wende es auf alle Projekte an, von denen es fehlt.
Ich hatte das selbe Problem, außer dass System.Web.Websites.Razor, wenn ich die in Chris Pratts Antwort beschriebenen Schritte durchging, immer noch die Version 2.0.0.0 zeigte, obwohl ich gerade den Prozess der Aktualisierung durchgemacht hatte 3.0.0.0 bis NuGet.
Was es letztendlich für mich behob, war, das MVC-Paket mit NuGet zu deinstallieren und es erneut zu installieren (und damit seine Abhängigkeiten neu zu installieren: System.Web.Websites und System.Web.Razor)
Für mich musste ich nur die "Spezifische Version" von "Falsch" in "Wahr" ändern und es fing an zu arbeiten.
Klicken Sie mit der rechten Maustaste auf die Assembly (in Referenzen), und wählen Sie im Inhaltsmenü Eigenschaften aus, um deren Eigenschaften auf der Registerkarte Eigenschaften von Visual Studio anzuzeigen. Suchen Sie dort nach einer Eigenschaft Copy Local und stellen Sie sicher, dass sie auf True gesetzt ist.
Tags und Links asp.net-mvc c# razor asp.net asp.net-mvc-4