Rasoir intellisense d'erreur: "Fonction de la méthode d'extension' ne peut pas être utilisé car il ne fait pas partie de l'ISO-2 spécification du langage C#
Objectif:
- Utilisation cshtml
Razor
modèles de données au format - Intégrer cshtml Rasoir modèles dans la Bibliothèque de la Classe comme
Embedded Resources
- Utilisation
Linq
états et les méthodes d'extension dans le cshtml modèle
J'ai créé un nouveau projet de bibliothèque de classes, puis adaptées Scott, Hanselman de l' instructions sur la façon d'intégrer MVC3 dans un WebForms application de l'obtenir pour fonctionner dans une Bibliothèque de Classe. Puis-je utiliser le package NuGet RazorEngine appliquer le modèle à un objet.
Jusqu'à présent, il fonctionne très bien, avec un hoquet: L'intellisense ne reconnaît pas Linq des déclarations ou des méthodes d'extension (une jolie partie importante de la MVC) lors de l'édition cshtml fichiers.
Donc pour la suite de cshtml fichier:
@model Customer[]
@Model.Count()
@if (Model.Where(customer => customer.Type == 'New').Any())
{
<span>Found at least one new customer.</span>
}
...il affiche les erreurs suivantes:
Feature 'extension method' cannot be used because it is not part of the ISO-2 C# language specification
Feature 'lambda expression' cannot be used because it is not part of the ISO-2 C# language specification
Personne ne sait ce que je suis absent? Je vous remercie à l'avance, j'ai passé des heures à chercher la réponse à cette question.
Quelques détails supplémentaires
Ce qui suit est mon web.config
dans le Vues dossier:
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler" />
</httpHandlers>
<pages validateRequest="false" pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
</system.web>
<system.webServer> ... </system.webServer>
</configuration>
Et j'ai ajouté un web.config
fichier à la racine du projet. Il contient les éléments suivants:
<configuration>
<system.web>
<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.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
</compilation>
...
<pages>
<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.Routing" />
<add namespace="System.Web.WebPages" />
</namespaces>
</pages>
</system.web>
...
</configuration>
Et voici les références pour le projet:
La Bibliothèque de Classe a d'une cible cadre de .NET Framework 4
et en vertu de l'Avancée des Paramètres de génération, la Version de Langue est définie à C# 3.0
.
Mise à jour
Le projet est construit et fonctionne correctement lors de l'utilisation de méthodes d'extension et de Linq. C'est juste l'intellisense qui génère l'erreur.
- Avez-vous des
system.codedom
dans le fichier de configuration(s)? - Salut Marc, je n'ai pas de système.codedom élément dans les fichiers de config. Est-il nécessaire?
- non; au contraire, le site web par défaut.config doit gérer cela; j'étais juste une question, il peut y être rendant l'utilisation de C# 2.0
- Vérifiez votre build/propriétés du Projet, je suis curieux de savoir si il y a de toute règle ou de fxcop l'intégration de la force 2.0 spec?
- Je ne peux pas trouver quoi que ce soit dans la composition ou les propriétés du projet qui pourraient être forcer 2.0... Vérifié la source de l' .vsproj fichier, en vain.
Vous devez vous connecter pour publier un commentaire.
La clé de la résolution de ce problème est d'ajouter la balise suivante à votre application.config ou web.config
Remarque: Dans certains cas, le déchargement et le rechargement du projet est nécessaire.
targetFramework="4.0"
dans l'app.config. Merci!!!!App.config
.J'ai essayé toutes les solutions pour cette erreur que j'ai pu trouver un peu partout sur le web et n'a pas de chance.
J'ai enfin eu cette erreur à disparaître (et mon IntelliSense de travail) en copiant les extra MVC blocs de configuration de mon projet web.fichier de configuration pour mon projet app.fichier de configuration.
Semble Visual Studio ne respecte pas web.config (au moins certaines de ses composantes) en un simple vieux C# projet de bibliothèque.
Mon projet app.fichier de configuration ressemble à ceci:
Bonne chance.
La solution pour moi a été de changer le type de projet
1.Décharger le projet
2.Édition d'un projet
3.Ajouter la ligne ci-dessous (en fonction de votre projet MVC version) juste après ProjectGuid
MVC 4
MVC 3
@Matt
Essayez d'ajouter ce pour le Web.Config à la Racine du projet (et non dans le Dossier Vues)
Après quelques heures de bricolage, j'ai trouvé qu'il avait quelque chose à voir avec la norme des extensions Visual Studio qui ne se chargent pas correctement.
J'ai reçu le message d'erreur:
J'ai trouvé la réponse sur sur Microsoft Connect.
Comment réparer
1) Exécuter les programmes d'installation suivants à partir de Visual Studio media:
2) Redémarrez VS
J'espère que cela peut aider quelqu'un d'autre.
Nous avons eu exactement ce problème dans notre Projet aujourd'hui - c'est peut-être répliquées à travers les membres de l'équipe n'était pas une question d'installer. Intellisense est en train de compiler les pages de 2.0 code de la CS n ° 3.
Je le suivis jusqu'à l'ajout d'un site Web de Référence pour le Projet de la Classe (à l'aide de MVCContrib pour l'avoir comme une bibliothèque de référence comme par http://lostechies.com/erichexter/2009/11/01/asp-net-mvc-portable-areas-via-mvccontrib/)
Pris le WebReference et l'a transféré à un autre projet et fixe le problème, a fallu un peu de chasse donc espérons que cela aide quelqu'un d'autre!
Ajouter un “système.codedom de la section” pour votre fichier de configuration (app.la configuration d'une Application Console) par exemple: