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?

23
demandé sur skaffman 2011-01-05 17:39:54

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!

16
répondu Peter 2011-08-19 14:25:54

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.

9
répondu kefer9 2012-01-24 10:16:30

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.

4
répondu Jeremy Holovacs 2013-03-22 13:25:59

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'

2
répondu algor77 2015-05-13 21:33:41

avez-vous une référence à Microsoft.CSharp et System.Core?

1
répondu marcind 2011-01-05 15:12:13

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,

1
répondu PanKak 2014-09-27 01:09:46

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.

0
répondu Perry 2011-06-23 21:09:00

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.

-1
répondu Blue Clouds 2014-08-29 09:03:35

Page.Title = "Detail1";

Cela pourrait fonctionner.

-2
répondu Emil 2011-06-02 19:35:24