Dans mon cas, j'ai eu ce problème sur mon PC uniquement pour un projet. Mon projet a bien fonctionné dans VS2012 mais lorsqu'il a été ouvert dans VS2017, il avait ce problème.
Le principal problème pour moi ici était le cache. Mon projet pointait vers les anciennes versions en cache de dll pour Razor et MVC et il ne trouvait pas les fonctionnalités ajoutées dans les versions plus récentes, telles que ViewBag. ViewBag a été ajouté dans la version 3 de Razor, mais comme j'avais la version 2 de Razor en cache, il n'a pas pu trouver ViewBag (mais il pouvait trouver d'autres éléments qui étaient présents dans la version 2). Cependant, le simple fait de vider le cache comme dans la réponse acceptée n'a pas résolu mon problème. Nous avons dû changer les fichiers de configuration pour dire "utiliser la version 3 au lieu de 2" pour Razor et "utiliser la version 5 au lieu de 4" pour MVC, puis fermer VS, supprimer le cache, ouvrir le projet et reconstruire. Puis les choses se sont arrangées. Vous trouverez ci-dessous des instructions plus détaillées.
Voici la séquence des changements qui m'ont aidé à résoudre mon problème:
- Dans Web.config du dossier «Views», modifiez tous les emplacements où
- La version MVC est définie sur 4.0.0.0 à 5.0.0.0
- La version de Razor est définie sur 2.0.0.0 à 3.0.0.0
Voici ces lignes dans mon cas:
<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>
(notes: 1) vos versions peuvent être différentes, je dis juste ce qu'il fallait faire dans mon cas 2) J'ai omis des trucs avec "..." par souci de brièveté 3) même si vous avez une version MVC quelque chose comme 5.3.2.0 vous devez toujours saisir 5.0.0.0, même chose avec la version de Razor - saisissez tous les zéros dans 3.0.0.0)
Dans le fichier de configuration principal (celui du niveau supérieur), webPages:version
passez de 2.0.0.0 à 3.0.0.0.
Ce changement n'a probablement pas affecté la solution, mais je le mentionnerai quand même. Assurez-vous que la <namespaces>
section du dossier «Views» a exactement le même contenu que le fichier principal .conifg à la racine du projet, quelque chose comme:
<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>
- Enfin, fermez VS. Supprimez tous les fichiers de cache dans
%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache
(ou quel que soit votre chemin correct), comme il est suggéré dans la réponse (actuellement) acceptée par Fenton. Supprimez également le .scan
fichier, même s'il n'est pas mentionné dans cette réponse. Une fois que vous avez terminé, ouvrez VS, nettoyez votre projet et reconstruisez-le. Les choses devraient fonctionner maintenant. Cela a fonctionné pour moi.