355 votes

Le nom du type ou de l'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 compilait plus. Il me donnait des messages comme :

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

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

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

Erreur 12 Le nom de type ou d'espace de nom 'DataService' n'a pas pu être trouvé (manque-t-il une directive using ou une référence d'assemblage ?)

Comment puis-je le réparer ?

0 votes

Est-il possible que certaines références aient été supprimées ? Ou que certaines déclarations d'utilisation en haut de page aient été supprimées ?

0 votes

Je ne me souviens pas d'avoir supprimé des références.

0 votes

Que vous les ayez supprimés ou non, ils sont partis. Essayez de les rajouter. Vous devez System.Data y System.Linq .

676voto

Nathan Koop Points 9115

J'ai eu le même problème, et j'ai dû régler le "Target Framework" de tous les projets pour qu'il soit le même. Ensuite, tout s'est bien passé. Dans le menu Projet, cliquez sur Propriétés du nom du projet. Cliquez sur l'onglet Compiler. Cliquez sur Options de compilation avancées. Dans le "Target Framework", choisissez le framework de votre choix.

13 votes

J'ai défini le "Target Framework" en faisant un clic droit sur le projet dans l'explorateur de solutions, et en sélectionnant les propriétés. Le Target Framework doit être visible dans l'onglet Application par défaut.

4 votes

@jaminator C'est une solution dans certains cas. Du moins dans le mien. Pour une raison quelconque, mon projet a refusé d'accepter un espace de nom existant de la même solution. Le problème était que l'application console ciblait le profil du client.

0 votes

J'ai eu cette même erreur pour un contrôle d'utilisateur sur lequel je travaille. Je l'ai ajouté au formulaire et je peux le voir dans mon projet de test. Je peux également voir l'espace de nom dans le navigateur d'objets et cliquer sur les liens qui s'y trouvent pour naviguer sans problème. Cependant, lorsque je construis le projet, j'obtiens cette erreur d'espace de nom. Je me suis assuré que tous les frameworks étaient identiques et, bien sûr, le projet usercontrol avait le profil client et les autres avaient le profil complet. Le fait de les rendre tous identiques a résolu le problème pour moi. La description de l'erreur d'espace de nom est totalement erronée. Merci pour votre réponse, Nathan.

46voto

john west Points 126

J'ai eu un problème avec System.Linq ne sont pas reconnus. Le site using La déclaration avait une tache rouge, etc. J'ai résolu le problème en modifiant mon site Web pour cibler dotnet 3.5, puis en revenant au framework ciblé original (4.0 dans mon cas).

2 votes

Ça a marché pour moi aussi ! Mais j'ai dû le faire deux fois... allez savoir !

0 votes

Après avoir fusionné manuellement des fichiers web.config de différents frameworks cibles pour la même application, le web.config a cessé de fonctionner et j'ai obtenu une erreur 500 Internal Server Error. Après avoir réinitialisé comme décrit, certains anciens paramètres ont été supprimés automatiquement du web.config par Visual Studio 2012, et l'application a de nouveau fonctionné.

0 votes

J'ai eu un problème similaire, je pense que certaines versions de frameworks ne reconnaissent simplement pas System.Linq comme une bibliothèque valide

36voto

KiwiNige Points 318

J'ai découvert 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 ).

Changez votre espace de nom pour un nom qui n'est pas le même que celui de votre classe et cela compilera.

Source :

7 votes

Pour le résoudre, il suffit de préfixer le Windows.Whatever con global::

20voto

ModChowdhury Points 81

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

Solution Explorer -> References -> Clic droit sur System.Data.Linq -> Copy Local (True)

0 votes

Pour moi, je n'ai pas eu besoin de mettre Copy Local -> True, mais plutôt Specific Version -> False. Cela a permis de résoudre le problème.

13voto

Gorglar Points 201

Vérifiez que votre cadre cible possède les mêmes versions de .NET. J'ai eu le même problème et ma classe .NET était en 3.5 et la solution web en 4.5. J'ai synchronisé les deux et ça a marché :)

23 votes

Cela ne fait que répéter ce qui a été dit et expliqué dans réponse préalable qui a été posté plusieurs mois avant celui-ci

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X