Le nom de type ou d'espace de noms n'existe pas [fermé]

318

J'ai un projet WCF Data Service construit avec Visual Studio 2010, qui fonctionnait bien. Tout d'un coup, il n'a plus compilé. Cela me donnait des messages comme:

Erreur 7 Le type ou le nom d'espace de noms «Services» n'existe pas dans l'espace de noms «System.Data» (manque-t-il une référence d'assembly?) C: \ U ... s \ Visual Studio 2010 \ Projects ... \ DataService. cs ...

Erreur 8 Le nom de type ou d'espace de noms 'Linq' n'existe pas dans l'espace de noms 'System' (manque-t-il une référence d'assembly?) DependencyResolver.cs 3 14

Erreur 10 Le nom de type ou d'espace de noms «Web» n'existe pas dans l'espace de noms «System.ServiceModel» (vous manque une référence d'assembly?)

Erreur 12 Le type ou le nom de l'espace de noms 'DataService' est introuvable (manque-t-il une directive using ou une référence d'assembly?)

Comment puis-je le réparer?

Attilah
la source
4
même après avoir ajouté ceux-ci, les messages d'erreur restent
Attilah
18
Cela m'a été utile. Je ne sais pas pourquoi il a été fermé.
utilisateur gmail
2
Je pense que c'est parce que bien que les réponses aient été utiles, la question d'origine est très ouverte et ne se rapportera probablement à personne d'autre, même si les réponses le font
WongKongPhooey
48
Hé regarde! Une question utile sur SO. Oh, attends, c'est hors sujet. Mais il a un grand nombre de votes positifs et une réponse avec encore plus de votes positifs. Quelque chose est certainement «hors tension» ici, mais ce n'est pas cette question.
Jagd
3
Comment les gars qui ont voté pour fermer ce dossier ont-ils manqué l'erreur très spécifique dans la question ("Le type ou le nom de l'espace de noms n'existe pas dans l'espace de noms")? J'ai eu un problème similaire et j'ai recherché ce message d'erreur sur Google et cette question était le meilleur résultat. La question n'est donc pas du tout vague.
Simon Tewsi

Réponses:

619

J'ai eu le même problème et j'ai dû définir le "Cadre cible" de tous les projets pour qu'il soit le même. Ensuite, ça s'est bien passé. Dans le menu projet, cliquez sur Propriétés ProjectName. Cliquez sur l'onglet de compilation. Cliquez sur Options de compilation avancées. Dans le cadre cible, choisissez le cadre souhaité.

Nathan Koop
la source
13
J'ai défini le "Framework cible" en cliquant avec le bouton droit sur le projet dans l'explorateur de solutions et en sélectionnant les propriétés. Le Framework cible doit être visible dans l'onglet Application par défaut.
Cookie du
4
@jaminator C'est une solution dans certains cas. Au moins dans le mien. Pour une raison quelconque, mon projet a refusé d'accepter qu'un espace de noms existe à partir de la même solution. Le problème était que l'application console ciblait le profil client.
Amadiere
3
Fonctionne aussi pour moi. Se produit lorsque j'ajoutais un projet WPF (.NET 4 Client Profile) et une référence de projet de bibliothèque de classes (.NET 4). Merci beaucoup!
Tamas Ionut
58
+1 à cela. Message d'erreur horriblement trompeur. Cela m'a probablement fait gagner des heures à essayer de comprendre. Hé, Microsoft, que diriez-vous de "ne pas pouvoir importer l'espace de noms BLAH parce que BLAH est une version incompatible" mais je suppose que cela aurait privé Nathan de 184 votes positifs.
Gerald Davis
3
Existe-t-il une solution de contournement pour les cas où nous ne pouvons pas modifier les cadres cibles des projets?
Raj123
43

J'ai eu un problème avec System.Linq non reconnu. La usingdéclaration avait un pli rouge, etc. La façon dont je l'ai résolu était de changer mon site Web pour cibler dotnet 3.5, puis de revenir au cadre cible d'origine (4.0 dans mon cas).

John West
la source
2
A aussi fonctionné pour moi! Mais je devais le faire deux fois ... allez comprendre!
nichole
Après avoir fusionné manuellement certains fichiers web.config de différents frameworks cibles pour la même application, le web.config a cessé de fonctionner et j'ai eu une erreur de serveur interne 500. Après la réinitialisation comme décrit, certains anciens paramètres ont été supprimés automatiquement par Visual Studio 2012 du web.config, puis l'application a de nouveau fonctionné.
humbads
J'ai eu un problème similaire, je pense que certaines versions du framework ne reconnaissent tout simplement pas System.Linqcomme une bibliothèque valide
Callat
3
Je vous remercie. C'est ridicule que ce sujet ait été fermé car cela m'a aussi aidé après avoir perdu une heure à essayer de comprendre pourquoi ma fonction et ma référence ont cessé de fonctionner tout d'un coup. La référence qui a échoué pour moi était system.management.automation.dll
Bbb
C'était vraiment une magie. Tout comme mon nouveau Mobile Honor 8X, dans lequel parfois la modification des paramètres ne prend pas effet immédiatement. Pour que cela fonctionne correctement, je dois faire plusieurs allers-retours.
Harish NInge Gowda
28

J'ai trouvé que cela était dû au fait que j'avais le même nom d'espace de nom que le nom de classe ( MyWorld.MyWorld = Namespace.ClassName).

Remplacez votre espace de noms par un nom qui n'est pas le même nom que votre classe et cela se compilera.

La source

KiwiNige
la source
6
Pour le résoudreWindows.Whateverglobal::
préfixez
20

J'ai rencontré le même problème avec un site ASP.NET MVC lorsque j'ai essayé d'utiliser LINQ to SQL . J'ai résolu le problème en:

Explorateur de solutions -> Références -> Cliquez avec le bouton droit sur System.Data.Linq -> Copier local (vrai)

ModChowdhury
la source
17

Vérifiez que votre framework cible a les mêmes versions .NET. J'ai eu le même problème et ma classe .NET était de 3,5 et la solution Web en avait 4,5. J'ai synchronisé ceux-ci, puis cela a fonctionné :)

Gorglar
la source
16
cela ne fait que répéter le point soulevé et expliqué dans la réponse précédente qui a été publiée plusieurs mois avant celui-ci
moucher
12

J'ai eu le même problème et j'ai essayé tout ce qui précède sans succès, puis j'ai découvert ce que c'était:

J'avais créé un dossier appelé "Système" dans l'un de mes projets, puis créé une classe dedans. Le problème semble provenir d'avoir un espace de noms appelé "System" lorsque le fichier .cs est créé, même s'il se trouve dans un espace de noms de "MyProject.System".

Avec le recul, je peux comprendre pourquoi cela causerait des problèmes. Cela m'a vraiment déconcerté au début car les messages d'erreur ne semblent pas initialement liés au problème.

GrandMasterFlush
la source
1
J'avais aussi ce problème, pour référence. Ce serait bien s'il y avait un message d'erreur plus explicatif dans l'outil, mais bon.
Nick
3
J'ai posté quelque chose sur MSDN, mais MS a dit que ce n'était pas un bug. Je ne contesterai pas cela, mais j'aurais espéré qu'ils auraient compris comment cela pouvait causer des problèmes.
GrandMasterFlush
1
C'est de la tromperie ...
Jitka Darbie Hübnerová
12

J'ai rencontré le même problème avec System.Data.SQLite. La source du problème est que la DLL que vous avez utilisée doit avoir la même version .NET avec votre projet.

Par exemple, si vous avez utilisé (dans mon cas) SQLite pour .NET 4.5, votre plate-forme cible devrait également être .NET 4.5.

Vous pouvez trouver la plate-forme cible par: Projet> (nom du projet) Propriétés> Construire.

hakanali_md
la source
1
Cela a résolu un problème que je venais d'avoir. Le message d'erreur n'est pas très utile au-delà de vous dire quelle DLL est le problème.
PointlessSpike du
7

Dans mon cas, le problème se produisait parce que la classe que j'avais créée avait un espace de noms qui interférait avec les classes existantes. La nouvelle classe A avait un espace de noms zz.yy.xx (par erreur). Les références aux objets dans un autre espace de noms yy.xx n'étaient pas compilées dans la classe A ou d'autres classes dont l'espace de noms était zz.

J'ai changé l'espace de noms de la classe A en yy.xx, ce qu'il aurait dû être, et il a commencé à fonctionner.

zDan
la source
5

POUR TOUTE PERSONNE AVEC DES FICHIERS LIÉS: J'ai eu ce problème et j'utilisais Silverlight et le fichier incriminé qui lançait cette erreur était un fichier lié.

L'erreur du compilateur m'a dit que l'erreur se produisait dans le projet dans lequel le fichier vivait. Il s'est avéré que l'erreur n'était PAS dans ce projet, elle se produisait dans le projet qui contenait le fichier lié. Il manquait une référence à ce projet.

Mario
la source
J'ai eu ce problème avec le projet .NET 4 en utilisant System.Management.Automation lors du test du projet avec Visual Studio 2013 sur Windows 10. Mise à niveau du projet vers .NET 4.5.1 problème résolu.
Malcolm McCaffery
2

J'ai rencontré ce problème lors de l'utilisation de l' intégration Git de Visual Studio pour gérer le projet. Pour une raison quelconque, le projet Windows Phone 8 se compilerait très bien lors du ciblage de x86, mais lorsque je le définirais pour cibler ARM, il échouerait lors de la compilation avec une erreur indiquant que "Advertising" n'existait pas dans l'espace de noms Microsoft.

J'ai fini par résoudre le problème en supprimant la référence Microsoft.Advertising. *. Dll et en l'ajoutant à nouveau.

Tom Stu
la source
1

Dans mon cas, il n'y a eu aucun changement dans les projets, il s'est juste arrêté de compiler et avec "le type ou le nom d'espace de noms XXX n'existe pas" et dans la classe plaignante elle-même intellisense pour cet espace de noms / classe XXX fonctionne correctement. Le problème était en effet dans les références!

Étapes à reproduire:

  1. La solution a ProjectA, ProjectB. ProjectA fait référence à log4net tiers et il est marqué Copy local: true. ProjectB fait référence à ProjectA et n'a pas de référence à log4net. La solution se compile bien.

  2. Changement dans ProjectA: propriété de référence pour log4net en Copy local: false .

  3. Nettoyer les dossiers bin et obj.
  4. Lorsque vous compilez, ProjectA compile mais ProjectB se plaint de ne pas trouver l'espace de noms ProjectA.

This is because ProjectB dossier bin manque bibliothèque tierce (log4net in my case)!

Dans ce cas, la solution serait -

  1. assurez-vous que les références des bibliothèques tierces sont définies sur Copy local: true ou
  2. ajouter un chemin d'accès à ces bibliothèques dans les propriétés du projet sous le chemin de référence.
Sasha Bond
la source
1

Je fais référence à Microsoft.CommerceServer.Runtime.Orders et j'ai rencontré cette erreur. Ce projet est ancien et dispose du framework Target .NET 2.0. En sortie, j'ai eu cette erreur:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3268: The primary reference "Microsoft.CommerceServer.Runtime" could not be resolved because it has an indirect dependency on the framework assembly "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v2.0". To resolve this problem, either remove the reference "Microsoft.CommerceServer.Runtime" or retarget your application to a framework version which contains "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

J'ai simplement changé le framework cible en .NET 4 et maintenant il se construit.

Skychan
la source
1

Et si tout le reste échoue, par exemple en vous assurant que les frameworks cibles sont les mêmes, et que vous avez affaire à une bibliothèque de classes WPF dans VS2010, redémarrez simplement Visual Studio. Ça l'a fait pour moi.

Klaus Nji
la source
dans mon cas vs2010, une référence de DLL contient une erreur, j'ai lu la référence de DLL et cela semble génial, mais après la construction, cela type namespace errorse produit. Et je redémarre Visual Studio, après avoir redémarré, l'erreur d'origine de la DLL s'affiche à nouveau, et je l'ai relue et reconstruite, succès.
yu yang Jian
0

J'ai rencontré les mêmes erreurs. Après avoir découvert que mon projet avait le mauvais nom d'assembly (j'ai copié des fichiers d'un autre projet et les espaces de noms sont devenus un peu confus), et l'ai changé en arrière, le projet s'est bien compilé.

Fred
la source
Malgré le vote négatif, c'était mon problème! Merci.
SteveCav
0

J'ai reçu un message d'erreur très similaire qui a été provoqué par avoir fait par inadvertance un doublon d'une classe dans un autre projet de ma solution. La suppression du doublon a résolu le problème

Chris Halcrow
la source
0

J'ai récemment eu besoin de faire une restauration du système et cela a causé la modification / disparition de plusieurs de mes fichiers sur lesquels je travaillais depuis la restauration. Certains d'entre eux étaient des fichiers DLL. J'ai utilisé le contrôle de code source pour récupérer l'intégralité du projet, mais j'avais toujours un problème similaire à celui ci-dessus. J'ai trouvé cette réponse qui décrit que vous devrez peut-être supprimer une DLL et la lire pour corriger vos erreurs. C'était le cas dans mon scénario.

Le supprimer WebMatrix.WebDataet le relire ainsi que l'ajouter dans WebMatrix.Datafixe mon erreur de The type or namespace name 'Data' does not exist in the namespace 'WebMatrix' ....

JabberwockyDecompiler
la source
-3

Supprimez le fichier .refresh.dll si vous êtes sous contrôle de code source. Reconstruisez ensuite. Ça devrait marcher. Cela a fonctionné pour moi

sajad
la source