W moim przypadku ten problem występował tylko na moim komputerze tylko dla jednego projektu. Mój projekt działał dobrze w VS2012, ale po otwarciu w VS2017 miał ten problem.
Głównym problemem dla mnie była pamięć podręczna. Mój projekt wskazywał na starsze wersje dll z pamięci podręcznej dla Razor i MVC i nie znajdował funkcji, które zostały dodane w nowszych wersjach, takich jak ViewBag. ViewBag został dodany w Razor w wersji 3, ale ponieważ miałem buforowany Razor w wersji 2, nie mógł znaleźć ViewBag (ale mógł znaleźć inne rzeczy, które były obecne w wersji 2). Jednak samo wyczyszczenie pamięci podręcznej, jak w zaakceptowanej odpowiedzi, nie rozwiązało mojego problemu. Musieliśmy zmienić pliki konfiguracyjne, aby powiedzieć „użyj wersji 3 zamiast 2” dla Razor i „użyj wersji 5 zamiast 4” dla MVC, a następnie zamknąć VS, usunąć pamięć podręczną, otworzyć projekt i odbudować. Potem wszystko zostało naprawione. Poniżej znajdują się bardziej szczegółowe instrukcje.
Oto sekwencja zmian, które pomogły mi rozwiązać problem:
- W folderze „Widoki” Web.config zmień wszystkie lokalizacje, w których
- Wersja MVC jest ustawiona na 4.0.0.0 do 5.0.0.0
- Wersja Razor jest ustawiona na 2.0.0.0 do 3.0.0.0
Oto te wiersze w moim przypadku:
<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>
(uwagi: 1) Twoje wersje mogą być inne, po prostu mówię, co należało zrobić w moim przypadku 2) Pominąłem kilka rzeczy z "..." dla zwięzłości 3) nawet jeśli masz wersję MVC podobną do 5.3.2.0 nadal powinieneś wprowadzić 5.0.0.0, to samo z wersją Razora - wprowadź wszystkie zera w 3.0.0.0)
W głównym pliku konfiguracyjnym (tym na najwyższym poziomie) zmień webPages:version
z 2.0.0.0 na 3.0.0.0.
Ta zmiana prawdopodobnie nie wpłynęła na rozwiązanie, ale nadal o tym wspomnę. Upewnij się, że <namespaces>
sekcja folderu „Widoki” ma dokładnie taką samą zawartość jak główny plik .conifg w katalogu głównym projektu, na przykład:
<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>
- Na koniec zamknij VS. Usuń wszystkie pliki pamięci podręcznej w
%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache
(lub jakiejkolwiek innej poprawnej ścieżce), tak jak sugeruje to (obecnie) zaakceptowana odpowiedź Fentona. Usuń także .scan
plik, nawet jeśli nie jest wymieniony w tej odpowiedzi. Gdy skończysz, otwórz VS, wyczyść projekt i przebuduj go. Teraz wszystko powinno działać. U mnie to zadziałało.