Le nom de type ou d'espace de noms 'Linq' n'existe pas dans L'espace de noms 'System'
j'ai un service de wcf hébergé dans un site web à IIS et je semble avoir ce problème. Dans mon web.config j'ai ceci:
<system.web>
<compilation>
<assemblies>
<add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/></assemblies>
</compilation>
</system.web>
tous les projets dans le cadre de la solution cible 4.0.
LE: j'obtiens l'erreur quand j'essaie d'importer le système.Linq;
using System.Linq;
8 réponses
Solution: Il semble que le web config devrait être:
<system.web>
<compilation debug="true" targetFramework="4.0"/>
</system.web>
avez-vous un fichier de code dans votre site avec Imports System.Linq
(VB) or using System.Linq;
(c#)?
semble comme la réponse la plus simple est qu'il s'agit d'une typographie. Peut-être que le namespace devrait être corrigé en System.Data.Linq
.
Modifier: Système.Linq devrait être un espace de noms valide, car il " fournit des classes et des interfaces qui prennent en charge les requêtes qui utilisent la requête intégrée au langage (LINQ)."(http://msdn.microsoft.com/en-us/library/system.linq.aspx). Il est également importé par défaut au niveau du système Web.config.
donc, pas sûr de ce qui se passe ici si elle n'est pas liée à ma suggestion ci-dessus. Peut-être que quelque chose ne va pas dans votre machine.config ou système-Niveau web.config?
Modifier 2: Je trouve étrange que vous ajoutiez le système.Assemblage central à ce niveau. Je pense que c'est l'assemblée qui inclut le système.Espace de noms Linq. Peut-être l'enlever aiderait?
Modifier 3:
System.Linq
est importé par défaut dans le web au niveau de la machine.config. Vous pouvez supprimer l' ligne dans votre fichier de code.
parfois il "disparaît" juste pour le plaisir. Si vous n'en avez pas besoin, supprimez-le.
sinon cliquez avec le bouton droit de la souris sur votre site Web dans l'Explorateur de solutions et ajoutez une référence à celui-ci.
Je n'avais pas de méthodes Linq sur mon contrôleur (Count, Where, toList, etc...). L'ajout de l'espace de noms:
using System.Linq;
résolu le problème pour moi. Peut-être aider quelqu'un dans le futur...
j'ai eu la même erreur mais mon application web fonctionnait sur framework v2.0. J'ai changé ma liste d'applications de v2.0 à v4.0. tous les travail...les jours heureux
le problème est que vous n'avez pas ajouter
debug="true|false" targetFramework="4.0"
lors de la compilation de la balise.
j'ai résolu ce problème en ajoutant l' System.Linq
espace de noms les espaces de noms dans le Views\Shared\Web.config
fichier électronique.g, comme ci-dessous, 2ème à partir du bas, au-dessus de l' WebApplication1
espace de noms.
Remarque, c'est dans le Web.config
dans le Views
n'est pas le principal site web du site.config`.
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.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.Optimization"/>
<add namespace="System.Web.Routing" />
<add namespace="System.Linq" />
<add namespace="WebApplication1" />
</namespaces>
</pages>
</system.web.webPages.razor>
une Autre chose à vérifier est votre .dossier csproj, plus précisément ces articles:
<TargetFrameworkProfile>Profile47</TargetFrameworkProfile>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
Si vous n'avez pas de dossier pour le Profil indiqué, vous devrez peut-être modifier manuellement à celui que vous avez. Vous pourriez également être en mesure de télécharger la cible de https://www.microsoft.com/net/download/visual-studio-sdks.
malheureusement, mon collègue a eu ce cas avec un vieux projet PCL (profil-based PCL), de sorte qu'il n'était pas en mesure de aller télécharger la cible Portable .NET, mais j'ai dû lui donner les DLLs de mon dossier de fonctionnement (C:\Program fichiers (x86)\reference Assemblies\Microsoft\Framework.NETPortable\v4.0 \ Profile\Profile47).