ViewBag.Titre erreur
travailler contre la RC2 actuelle-le modèle qui est généré vues de rasoir comprend:
@{
ViewBag.Title = "Details1";
Layout = "/Views/Shared/_Public.cshtml";
}
avec une squiggly rouge sous viseur.Titre et cette erreur de compilateur:'
Error 4 One or more types required to compile a dynamic expression cannot be found. Are you missing references to Microsoft.CSharp.dll and System.Core.dll? c:Visual Studio 2010ProjectsmyProjViewsWebinarDetails1.cshtml 6 2 TTSTrain.Webinars.WebEntry
mais le projet construit et fonctionne correctement. L'erreur est-elle une indication d'autres problèmes qui devraient être abordés?
9 réponses
j'ai eu le même problème après avoir enlevé le targetFramework
attribut de <compilation>
élément dans le Web.fichier de configuration.
une Fois que j'ai restauré
<compilation debug="true" targetFramework="4.0">
Tout a bien fonctionné à nouveau!
je l'ai résolu de la façon suivante:
tout d'abord j'ai remarqué en utilisant gacutil (Global Assembly Cache Utility) qu'il contenait deux références au système.Core, un à la version 4.0 et un à la version 3.5. Apparemment à l'intérieur des vues de rasoir, même si dans le projet j'avais la référence correcte à la version 4.0, il utilisait toujours la version 3.5 et c'est pourquoi j'ai eu l'erreur sur les types dynamiques. Pour vérifier si c'est votre cas, ouvrez L'invite de commande de Visual Studio de l'administrateur et exécuter:
gacutil -l System.Core
supprimer la référence à L'ancienne version du système.De base j'ai fait les étapes suivantes:
- cd %systemroot%\assembly\
D'ici vous pouvez avoir plus d'un répertoire "gac", donc vous devrez chercher dans chacun pour trouver votre composant. Pour moi, c'était dans le répertoire "gac_MSIL".
- cd gac_msil
- cd System.Core
- cd <assembly version number>__<public key token>
- erase *.* Say "y" to are you sure.
- cd ..
- rd <assembly version number>__<public key token>
- cd ..
- rd System.Core
après cela j'ai ouvert ma solution à nouveau dans visual studio et l'erreur a disparu, il se réfère correctement au système.Core 4.0 et je n'avais pas la dynamique des erreurs plus :)
j'espère que ça va vous aider, Best, N.
semblable à la réponse de @Kaiser, j'ai éprouvé ce problème en raison d'avoir multiple System.Core
assemblées dans le GAC.
j'ai choisi de ne pas supprimer l'assemblage 3.5, cependant. Au lieu de cela, dans les vues web.config, j'ai modifié le configuration/system.web/compilation
noeud comme suit:
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</assemblies>
</compilation>
La ligne importante est le dernier assembly
node: il indique au compilateur Razor quelle version d'assemblage GAC utiliser.
une fois que j'ai fait cela, tout allait bien dans mes vues de rasoir.
je n'ai pas ce problème lors de l'exécution VS 2012 en tant qu'administrateur.
Sinon, ce qui a fonctionné pour moi:
dans la racine web de config ont ajouté à titre de référence recommandés pour le montage correct de l'enfant de la compilation de nœud`
<system.web>
<compilation debug="true" targetFramework="4.5">
<assemblies>
<add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</assemblies>
</compilation>
</system.web>
définir copie locale = true propriétés du Système.Core et Microsoft.CSharp'
en utilisant Peters answer j'ai réussi à résoudre le problème avec Html.EditorFor (m => M. xxx) souligner les erreurs dans les fichiers chtml. Bien que l'erreur de la barre D'observation ait persisté. Alors j'ai changé le web.config comme ceci
<compilation debug="true" targetFramework="4.5.1">
<assemblies>
<add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add assembly="Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</assemblies>
</compilation>
Notez le Microsoft.Csharp line. Ce qui précède a fait l'affaire et maintenant l'éditeur chtml est clair dans les soulignements rouges. Merci Peter,
j'ai eu exactement le même problème. Par défaut, lorsque vous créez une application MVC3, elle colle un web.débogage.config et une toile.publier.config dans la solution. Quand je me suis débarrassé de ces deux articles, le problème du sac à visionnement s'est résolu tout seul. Cela a peut-être quelque chose à voir avec ce que Peter disait plus haut, mais je n'ai pas testé cela.
C'est l'heure à laquelle les autres champs de ViewBag sont lus. Donc si vous les passez du contrôleur. ViewBag.yourobjectDto = yourObjectDto;
assurez-vous que cette ligne n'est pas bloquée si l'état ou quelque chose.