web-dev-qa-db-fra.com

Le nom de type ou d'espace de nom n'existe pas

J'ai un projet de service de données WCF construit avec Visual Studio 2010, qui fonctionnait bien. Tout à coup, il ne compile plus. Il me donnait des messages comme:

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

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

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

Erreur 12 Impossible de trouver le type ou le nom de l'espace de noms 'DataService' (il vous manque une directive using ou une référence Assembly?)

Comment puis-je le réparer?

293
Attilah

J'ai eu le même problème et j'ai dû définir le "Cadre cible" de tous les projets comme identique. Ensuite, il a bien construit. Dans le menu Projet, cliquez sur Propriétés ProjectName. Cliquez sur l'onglet compiler. Cliquez sur Options de compilation avancées. Dans le cadre cible, choisissez le cadre souhaité.

583
Nathan Koop

J'ai eu un problème avec System.Linq n'étant pas reconnu. La déclaration using avait une ondulation rouge, etc. La façon dont je l'ai résolue consistait à modifier mon site Web afin qu'il cible dotnet 3.5, puis à revenir au framework ciblé d'origine (4.0 dans mon cas).

41
john west

J'ai constaté que cela est dû au fait que j'ai 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 différent de celui de votre classe, ce qui compilera.

Source

24
KiwiNige

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:

Solution Explorer -> Références -> Cliquez avec le bouton droit sur System.Data.Linq -> Copier en local (True)

20
ModChowdhury

Vérifiez que votre infrastructure 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. Je les ai synchronisées, puis ça a marché :)

18
Gorglar

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

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

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

12
hakanali_md

J'ai eu le même problème et essayé tout ce qui précède sans aucun 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. Le problème semble provenir d'un espace de noms appelé "Système" lors de la création du fichier .cs, même s'il se trouve dans un espace de noms de "MyProject.System".

En regardant en arrière, je peux comprendre pourquoi cela causerait des problèmes. Cela m'a vraiment étonné au début, car les messages d'erreur ne semblent pas initialement liés au problème.

11
GrandMasterFlush

Dans mon cas, le problème était dû au fait que la classe que j'avais créée avait un espace de nom interférant avec les classes existantes. La nouvelle classe A avait un espace de noms zz.yy.xx (par erreur). Les références aux objets d'un autre espace de noms yy.xx n'étaient pas compilées dans la classe A ou dans 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 qui aurait dû être, et cela a commencé à fonctionner.

7
zDan

POUR TOUTE PERSONNE AVEC DES FICHIERS LIÉS: J'ai eu ce problème et 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 contenant le fichier lié. Il manquait une référence à ce projet.

5
Mario

Je fais référence à Microsoft.CommerceServer.Runtime.Orders et ai rencontré cette erreur. Ce projet est ancien et possède le 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 est construit.

1
Skychan

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 parfaitement lorsqu’il s’agissait de cibler x86, mais lorsqu’il était configuré pour cibler ARM, la compilation échouait avec une erreur indiquant que "Publicité" n’existait pas dans l’espace de nommage Microsoft.

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

1
Tom Stu

Et si tout échoue, par exemple pour vous assurer que les infrastructures cible sont identiques, et que vous traitez avec une bibliothèque de classes WPF dans VS2010, redémarrez simplement Visual Studio. Cela l'a fait pour moi.

1
Klaus Nji

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

Étapes pour reproduire:

  1. La solution a ProjectA, ProjectB. ProjectA fait référence à log4net tiers et porte la mention Copy local: true. ProjectB fait référence à ProjectA et n'a pas de référence à log4net. La solution compile bien.

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

  3. Nettoyez 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 ProjectBla bibliothèque tierce est manquante dans le dossier bin(log4net in my case)!

Dans ce cas, la solution serait -

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

J'ai vécu les mêmes erreurs. Après avoir découvert que mon projet avait un nom d'assembly incorrect (j'ai copié des fichiers d'un projet différent et que les espaces de noms étaient un peu confus), je l'ai modifié et le projet a été compilé correctement.

0
Fred

Un message d'erreur très similaire a été provoqué par la duplication accidentelle d'une classe dans un autre projet de ma solution. La suppression de la copie a résolu le problème.

0
Chris Halcrow

J'ai récemment eu besoin de faire une restauration du système et plusieurs de mes fichiers ont été modifiés/disparaissent 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 le problème était le même que ci-dessus. J'ai trouvé cette réponse celle décrite vous devrez peut-être supprimer un DLL et l'a relue pour corriger vos erreurs. C'était le cas dans mon scénario.

Le retrait de WebMatrix.WebData et sa lecture ainsi que l'ajout de WebMatrix.Data ont corrigé mon erreur de The type or namespace name 'Data' does not exist in the namespace 'WebMatrix' ....

0