Pourquoi suis-je " Un ou plusieurs des types requis pour compiler une expression dynamique ne peut pas être trouvé.'?
J'avais un projet que j'ai mis à jour à partir de
- .NET 3.5 MVC v2 à
- .NET MVC 4.0 v3
De la compilation j'ai une erreur quand j'essaie d'utiliser ou de régler le @ViewBag.Title
propriété.
Un ou plusieurs des types requis pour compiler une expression dynamique ne peut pas être trouvé.
Êtes-vous manque des références à Microsoft.CSharp.dll et System.Core.dll?
J'ai fait ce qui suit
- Suivi la procédure de mise à jour
- Définir la cible dans le cadre du Projet/Propriétés/onglet Application à .NET Framwework 4
- Ajouté le Système.Core cadre manuellement
- Ajouté le Microsoft.CSharp cadre
- Ajouté le System.Xml cadre
- Ajouté le Système.Xml.Linq cadre
- Fait sûr de mon Web.Config est correct (il est écrit sur le Web.Debug.Config, etc)
- Créé le modèle, contrôleur et un Rasoir Vue
- Créer un __Mise en page.cshtml_
Je suis à une perte pour quoi faire?
EDIT:
Je remarque que dans le GAC Gui il y a le Système.Core 3.5.0.0 mais aucun Système.Base de 4.0.0.0. Est-ce à dire que de se confondre et est toujours à l'aide de la version précédente? Ou suis-je malentendu le GAC?
EDIT:
De mon site web.config ressemble comme suit
...
<compilation debug="true">
<assemblies>
<add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Mvc, Version=3.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=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
</assemblies>
</compilation>
....
<pages>
<controls>
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</controls>
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.WebPages"/>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Linq" />
<add namespace="System.Collections.Generic" />
</namespaces>
</pages>
....
- Je ne suis pas sûr de savoir comment je peux le faire. J'ai pensé que vous ne pouvez regarder une trace de la pile lorsque vous déboguez/en cours d'exécution des tests unitaires?
- Ah, désolé, j'ai mal lu votre question. Je ne savais pas que vous avez obtenu l'erreur lors de la compilation. Ignorer mon commentaire précédent.
- Les deux Système.De base et Microsoft.CSharp sont v4.0.30319?
- avez-vous essayé de clôture de l'ensemble du projet, puis l'ouvrir à nouveau et la reconstruction de la solution ...
- Êtes-vous en mesure de créer un nouveau MVC3 projet et de construire et d'exécuter correctement?
- Oui, j'ai fermer tous mes visual studios et ré-ouverts. Ainsi que le déchargement puis de relancer le projet. J'ai aussi fait un nettoyage et à la reconstruction sur le niveau du projet et le niveau de la solution.
- Oui ils sont tous les deux de cette version
- oui, j'ai terminé la MvcMovie tutoriel du site msdn. En fait, j'ai utilisé le fichier de mise à jour de mon projet principal
- double possible de ViewBag.Titre de l'erreur
- Je l'ai résolu en redémarrant Visual Studio!
Vous devez vous connecter pour publier un commentaire.
Pour ce que ça vaut, lorsque cela m'est arrivé (dans un projet converti automatiquement à partir de MVC2 à MVC3), tout ce que j'avais à faire était d'ajouter une référence de projet à Microsoft.CSharp. Dans mon cas, le web.config déjà eu l'4.0 références mentionnées ici, je suppose courtoisie du script de mise à niveau.
Bon je l'ai eu à travailler avec les étapes suivantes.
<compilation debug="true">
à<compilation debug="true" targetFramework="4.0">
dans le système.section du site web d'<providerOption name="CompilerVersion" value="v3.5" />
à<providerOption name="CompilerVersion" value="v4.0" />
dans les compilateurs sectionViewEngines.Engines.Add(new RazorViewEngine());
à laApplication_Start()
méthodeet je pense qu'il a été.
Vous devez Ajouter une Référence pour Microsoft.CSharp.dll la version v4.0.30319 pour le projet. Qui est disponible à C:\Program Files\de Référence Assemblies\Microsoft\Framework\.NETFramework\v4.0\Microsoft.CSharp.dll après istalling VS 2010
Pour moi la solution était d'ajouter:
à la
Application_Start()
méthode dansglobal.asax.cs
.Il semble que vous importez Système.Core 3.5 de votre site web.config. Vous avez besoin d'importer du Système.Core du framework 4.0, parce que ViewBag requiert le Système.Dynamique de l'espace de noms.
Sur ma machine, il ressemble au Système.Core v4.0.30319
Je l'ai résolu de la manière suivante:
J'ai d'abord remarqué l'aide de gacutil (Global Assembly Cache Utilité) qu'il contient deux références au Système.De base, l'un à la version 4.0 et un à la version 3.5. Apparemment à l'intérieur du rasoir points de vue, même si dans le projet, j'ai eu la correcte référence à la version 4.0, il était encore à l'aide de la version 3.5 et c'est pourquoi j'ai été l'obtention de l'erreur sur la dynamique des types.
Pour vérifier si c'est votre cas, ouvrir en tant qu'administrateur Invite de Commande Visual Studio et de l'exécuter:
De supprimer la référence à l'ancienne version de Système.De base j'ai fait les étapes suivantes:
De là, vous pouvez avoir plus qu'un "gac" directory, de sorte que vous avez à la recherche à l'intérieur de chacun de trouver votre composant. Pour moi, c'était au sein du "gac_MSIL" répertoire.
Maintenant, j'ai ouvert ma solution à nouveau dans visual studion et l'erreur a disparu, il s'références correctement le Système.Core 4.0 et je ne reçois pas la dynamique des erreurs plus 🙂
J'espère que ça va vous aider,
Mieux, N.
C'était ma résolution:
1) Aller vers les Références du projet
2) clic Droit sur le Microsoft.CSharp -> Propriétés
3) Variation de la Copie Locale à False si vous avez de Vrai.
Si vous voyez ce message dans votre MVC point de vue, vous devez ajouter une référence dans les Vues\web.config comme ceci:
N'oubliez pas de faire un build, sinon les modifications ne seront pas prises en compte.
Un projet par défaut dans Visual Studio 2010 devrait avoir des références à Microsoft.CSharp et du Système.De base.
Si elles ne sont pas référencées dans votre projet, vous devez les ajouter, et les erreurs vont s'en aller.
Woow!
Je suis presque un an de retard, mais pense toujours que je devrais répondre en fonction de mes résultats (sur 13 juillet 2013 à 7:15p PST) liées à la message d'erreur. Cela peut être utile pour les gars qui sont à la recherche de la réponse à la message d'erreur:
veuillez donc lire sur:
J'ai eu le message d'erreur similaire lorsque j'ai mis en place
System.Dynamic
dans mon code. L'application Web fonctionne bien comme j'ai eu la bonne configuration dans le web.config (targetframework) mais quand je mets la app_code dans une dll puis il a commencé à générer des erreurs lors de la compilation. Veuillez noter que je n'ai pas app.config dans ma dll sorte qu'il peut PAS dépend de la configuration lorsque vous l'avez dans une dll projet, mais la référence à la dll correcte.J'ai pensé que correct
Microsoft.CSharp.dll
était dans"C:\Windows\Microsoft.NET\Framework\v4.0.30319"
, et ma dll compilé avec succès.Pour moi, non de ce qui précède travaillé, au lieu réglage
Copy Local = True
résolu le problèmeJ'ai eu ce problème lorsque j'ai mis à jour le MVC version dans mon projet. Le problème était le assemblyBinding directive, en quelque sorte Nuget oublié de le mettre à jour.
J'ai dû changer
à
J'ai reçu cette erreur pour une application windows avec Microsoft.Bureau de.Interop.Excel;...... versions du moteur d'exécution ne semble pas être compatible entre une ou plusieurs Dll.
MA SOLUTION:
J'ai converti toute ma solution .NET 4.0 .NET 3.5
pour l'enfer de celui-ci j'ai de nouveau converti en 4.0 et j'ai commencé à recevoir l'erreur à nouveau.
basée sur cette erreur, essayez converti votre solution à un vieux .NET framework qui pourrait fonctionner.
========== MODIFIER =================
2 heures plus tard, j'ai terminer certaines choses essentielles dans mon Excell interop classe et il fonctionne comme un charme...pour quelque raison que sur .NET 3.5 et 4.0 pas ma solution est valide à cette mesure
Aucun des ci-dessus a fonctionné pour moi. Avec plus de recherche et de regarder à travers sur le Web.Paramètres de configuration, j'ai trouvé cette réponse a fonctionné pour moi.
Comment puis-je corriger les "compilerVersion" IIS erreur?
J'avais quelque chose de très similaire m'arriver à moi, bien que dans mon cas, j'avais mis à jour un certain nombre de choses, y compris à partir de Visual Studio 2010, Visual Studio 2012. J'avais suivi tous les conseils ci-dessus et était encore de la souffrance. En fin de compte j'ai décidé de re-créer l'ensemble du projet. C'est seulement quand j'ai essayé de l'ajouter à nouveau le fournisseur d'appartenances aspects de mon web.fichier de configuration qu'il est soudainement devenu évident où la gestion des versions affrontement a été pour moi.
Bien qu'en regardant maintenant, cela va de soi. Le type pour l'offrir a une version spécifique. J'simple, puis supprimé de la version et le type approprié est trouvé. La résolution donc dans mon cas était de remplacer le ci-dessus avec:
Et puis re-compiler. Il m'a fallu des jours pour trouver cela, comme je l'ai été à la recherche dans tous les mauvais endroits!
J'ai essayé tous les autres suggestions dans ce fichier et aucun n'a fonctionné sur mon MVC 4 solution. Ainsi, après la mise à jour de mon VS2012 à WebTools 2013.1 pour VS 2012, j'ai créé un nouveau MVC 5 du projet et utilisation des nouveaux fichiers du projet en tant que base, supprimé toutes les lignes superflues de tous mes web.les fichiers de configuration.
Après l'avoir fait toutes mes erreurs de compilation et mises en garde ont disparu et Intellisense commencé à travailler correctement. Le fait d'enlever complètement le <système.web><pages> dans la section web principal.fichier de config, enfin, fixe le ViewBag.Titre (et d'autres) dynamique de l'expression des erreurs.
Comme je l'ai appris récemment, certaines extensions peuvent également être en cause. Dans mon cas, la suppression AutoHistory 1.0.1 extension fixe pour moi (MVC5).
Une cause fréquente de ce problème est que vous avez raté la mise à jour d'une version de l'Assembly dans votre
Views/web.config
fichier. Il est assez facile pour moi de les manquer dans<system.web><pages>
par exemple:J'ai été aux prises avec ce problème aussi pour un jour ou deux.
Après que j'ai enfin trouvé cet article ici et essayé toutes les suggestions ici, je suis venu pour une autre solution qui a résolu le Problème pour moi:
C'est tout le contraire comme Arman Bimatov a trouvé:
1) Aller vers les Références du projet
2) clic Droit sur le Microsoft.CSharp -> Propriétés
3) Variation de la Copie Locale à True si vous avez de Faux.
Je pense qu'il doit traiter d'une certaine manière avec les assemblées inscrit dans le GAC et de la façon dont Visual Studio devient la "bonne" Version. Je suppose que sur mon ordinateur du développeur en quelque sorte l' .NET Framework 3.5 est installé après les Cadres plus récents (si c'est possible), afin que Visual Studio reçoit la mauvaise Version du GAC. Ou simpply il est difficile pour VS pour obtenir la Version, de sorte qu'il prend le plus vieux...
Si vous avez encore le même message d'erreur, vous pouvez également essayer de mettre la Copie Locale de Vrai pour le Système.Core Dll et un coup d'oeil que cela fonctionne maintenant.
Ce qui concerne
SkippingAdi
J'ai été aux prises avec ce problème pendant des jours, et enfin compris.
Je me suis contenté de supprimer les éléments suivants à partir du web.config:
Je commencer à recevoir le même message d'erreur après avoir installé MVCSiteMapProvider paquet pour faire de la chapelure pour mon site.
Si vous avez installé MVCSiteMapProvider et vous obtenez cette erreur, vous devez le remplacer
@ViewBag.Title
par autre chose, par exemple,@Html.MvcSiteMap().SiteMapTitle()