In meinem Fall trat dieses Problem nur für ein Projekt auf meinem PC auf. Mein Projekt hat in VS2012 gut funktioniert, aber als es in VS2017 geöffnet wurde, hatte es dieses Problem.
Das Hauptproblem für mich hier war der Cache. Mein Projekt zeigte auf die älteren zwischengespeicherten DLL-Versionen für Razor und MVC und fand keine Funktionen, die in neueren Versionen wie ViewBag hinzugefügt wurden. ViewBag wurde in Razor Version 3 hinzugefügt, aber da ich Razor Version 2 zwischengespeichert hatte, konnte es ViewBag nicht finden (aber es konnte andere Dinge finden, die in Version 2 vorhanden waren). Das einfache Löschen des Cache wie in der akzeptierten Antwort hat mein Problem jedoch nicht behoben. Wir mussten die Konfigurationsdateien so ändern, dass für Razor "Version 3 statt 2 verwenden" und für MVC "Version 5 statt 4 verwenden" angezeigt wurde. Anschließend wurde VS geschlossen, der Cache entfernt, das Projekt geöffnet und neu erstellt. Dann wurden die Dinge repariert. Unten finden Sie detailliertere Anweisungen.
Hier ist die Reihenfolge der Änderungen, die mir geholfen haben, mein Problem zu beheben:
- Ändern Sie in der Web.config des Ordners "Ansichten" alle Speicherorte
- Die MVC-Version ist auf 4.0.0.0 bis 5.0.0.0 eingestellt
- Die Razor-Version ist auf 2.0.0.0 bis 3.0.0.0 eingestellt
Hier sind diese Zeilen in meinem Fall:
<sectionGroup name="system.web.webPages.razor" type="... Version=3.0.0.0 ...">
<section name="host" type="... Version=3.0.0.0 ..." .../>
<section name="pages" type="... Version=3.0.0.0 ..." .../>
</sectionGroup>
...
<host factoryType="... System.Web.Mvc, Version=5.0.0.0 ..." />
...
<pages
...
pageParserFilterType="... Version=5.0.0.0 ..."
pageBaseType="... Version=5.0.0.0 ..."
userControlBaseType="... Version=5.0.0.0 ...">
<controls>
<add assembly="... Version=5.0.0.0 ..." ... />
</controls>
</pages>
(Anmerkungen: 1) Ihre Versionen können unterschiedlich sein. Ich sage nur, was in meinem Fall zu tun ist. 2) Ich habe der Kürze halber einige Dinge mit "..." weggelassen. 3) Auch wenn Sie eine MVC-Version wie 5.3.2.0 haben Sie sollten weiterhin 5.0.0.0 eingeben, genau wie bei Razor - geben Sie alle Nullen in 3.0.0.0 ein.
Ändern webPages:version
Sie in der Hauptkonfigurationsdatei (die auf der obersten Ebene) von 2.0.0.0 auf 3.0.0.0.
Diese Änderung hatte wahrscheinlich keine Auswirkungen auf die Lösung, aber ich werde sie trotzdem erwähnen. <namespaces>
Stellen Sie sicher, dass der Ordnerabschnitt "Ansichten" genau den gleichen Inhalt hat wie die .conifg-Hauptdatei im Stammverzeichnis des Projekts.
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
</namespaces>
- Schließen Sie schließlich VS. Löschen Sie alle Cache-Dateien in
%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache
(oder wie auch immer Ihr korrekter Pfad lautet), wie es in der (derzeit) akzeptierten Antwort von Fenton vorgeschlagen wird. Löschen Sie auch die .scan
Datei, auch wenn sie in dieser Antwort nicht erwähnt wird. Wenn Sie fertig sind, öffnen Sie VS, bereinigen Sie Ihr Projekt und erstellen Sie es neu. Dinge sollten jetzt funktionieren. Es hat bei mir funktioniert.