329 votes

J'obtiens "le nom du type ou de l'espace de nom n'a pas pu être trouvé" mais tout semble correct ?

Je prends un :

le nom du type ou de l'espace de nom n'a pas pu être trouvé

pour une application WPF en C# dans VS2010. Cette zone de code se compilait bien, mais soudainement, j'obtiens cette erreur. J'ai essayé de supprimer la référence du projet et le fichier using je ferme VS2010 et je redémarre, mais je rencontre toujours ce problème.

Avez-vous une idée de la raison pour laquelle cela peut se produire, où il semble que je fasse la bonne chose en matière de référence ? using déclaration ?

J'ai également noté dans VS2010 que l'intellisense pour cet espace de nom fonctionne bien, donc il semble que VS2010 a la référence du projet et voit l'espace de nom d'une part, mais pendant la compilation ne le voit pas ?

0 votes

Il est possible de fermer et de redémarrer Visual Studio. Il semble parfois se "bloquer".

3 votes

Conseils : 1) l'assemblage est chargé ? 2) l'assemblage chargé correspond à l'assemblage d'origine ? 3) les directives "using" pointent vers des références anciennes ou non valides ? 4) le manifeste .csproj inclut des sources non valides ? 5) un outil de recherche cherche une expression rationnelle dans toute la solution (chaque bibliothèque de classes et chaque projet). 5) vérifier les paramètres du projet pour l'option de construction de la version de net framework (la collaboration en équipe entraîne ce genre de problème, vous devez convenir de la version de construction de net framew. des deux côtés) 6) Après cela, nettoyer et construire chaque projet séparément et enfin, inclure toutes les références au projet/bibliothèque de classe de destination. Je devrais travailler !

0 votes

Vérifiez si vous avez référencé la dll. La dll se trouve dans le dossier bin du répertoire de votre solution.

526voto

slugster Points 27178

Cela peut être le résultat d'une incompatibilité de version du framework .Net entre deux projets.

Cela peut se produire de deux façons :

  1. un projet de profil de client faisant référence à un projet-cadre complet ; ou
  2. une ancienne version du cadre ciblant une nouvelle version du cadre

Par exemple, cela se produit lorsqu'une application est configurée pour cibler le cadre .Net 4 Client Profile et que le projet auquel elle fait référence cible le cadre .Net 4 complet.

Donc, pour que ce soit plus clair :

  • Le projet A vise le cadre du profil du client
  • Références du projet A Projet B
  • Le projet B vise le cadre complet

La solution dans ce cas est soit de mettre à niveau la cible du framework de l'application (projet A), soit de rétrograder la cible de l'assemblage référencé (projet B). Une application full framework peut référencer/consommer un assemblage framework de profil client, mais pas l'inverse (le profil client ne peut pas référencer un assemblage full framework ciblé).

Notez que vous pouvez également obtenir cette erreur lorsque vous créez un nouveau projet dans VS2012 ou VS2013 (qui utilise .Net 4.5 comme framework par défaut) et que.. :

  • le(s) projet(s) de référence utilise(nt) .Net 4.0 (ceci est courant lorsque vous avez migré de VS2010 à VS2012 ou VS2013 et que vous ajoutez ensuite un nouveau projet).

  • les projets référencés utilisent une version supérieure, par exemple 4.5.1 ou 4.5.3 (vous avez reciblé vos projets existants sur la dernière version, mais VS crée encore de nouveaux projets ciblant la v4.5, et vous faites ensuite référence à ces anciens projets à partir du nouveau projet)

2 votes

Excellent - cela a fonctionné - j'ai dû mettre à niveau mon client WPF pour utiliser le .NET Framework 4 complet. Je ne suis pas sûr de l'impact que cela aura sur l'empreinte du client. J'ai essayé de rétrograder la bibliothèque que j'ai vers le profil client .Net 4, mais lorsque j'ai fait cela, j'ai eu des problèmes similaires avec la récente bibliothèque tierce Quartz.net que je venais de commencer à utiliser. Il semble donc que l'utilisation de Quartz.net dans mon projet de bibliothèque m'oblige finalement à utiliser le cadre .Net 4 complet dans mon application WPF d'interface utilisateur.

0 votes

J'ai eu le même problème lorsque j'ai essayé de référencer un projet dans la même solution. J'ai effectué une mise à niveau vers .NET Framework 4 à partir du framework Client Profile et j'ai cessé de recevoir les erreurs de compilation.

0 votes

J'ai vérifié mes projets - tous utilisaient le profil client 3.5, mais j'obtenais toujours des erreurs. Le passage à la version 3.5 complète a été une solution de rechange utile, mais vous ne l'expliquez pas. En tout cas, bravo !

30voto

ksun Points 394

Lors de la construction de la solution, j'ai obtenu la même erreur (le type ou l'espace de nom ' ' n'a pas pu être trouvé). Ci-dessous J'ai vu un avertissement indiquant que "la référence n'a pas pu être résolue" et pour s'assurer que "l'assemblage existe sur le disque".

J'étais très confus, car ma DLL se trouvait très clairement à l'endroit vers lequel la référence pointait. VS n'a pas semblé mettre en évidence d'erreurs, jusqu'à ce que j'essaie de construire la solution.

J'ai enfin compris le problème (ou du moins ce que je soupçonne être le problème). Je construisais le fichier de bibliothèque dans la même solution. Donc, même si elle existait sur le disque, elle était reconstruite à cet endroit (d'une manière ou d'une autre, au cours de la reconstruction de la bibliothèque, mon autre projet - dans la même solution - qui faisait référence à la bibliothèque a dû décider que la bibliothèque n'existait pas).

Lorsque j'ai fait un clic droit sur le projet et que j'ai construit uniquement celui-ci, au lieu de la solution complète, je n'ai pas eu l'erreur.

Pour résoudre ce problème, j'ai ajouté la bibliothèque comme dépendance au projet qui l'utilisait.

Pour ce faire :

  1. J'ai fait un clic droit sur ma solution dans l'explorateur de solutions et sélectionné "Propriétés"
  2. Ensuite, dans "Propriétés communes", j'ai sélectionné "Dépendances du projet".
  3. Puis dans le menu déroulant des projets, j'ai sélectionné le projet qui dépendait de la bibliothèque, et
  4. Cochez la case à côté de la bibliothèque qui se trouve sous "Dépend de".

Cela garantit que le projet de bibliothèque sera construit en premier.

2 votes

Merci pour le conseil de regarder les avertissements. Mon problème était que mon projet de test devait installer le paquet NuGet pour Bcl parce que mon projet principal y faisait référence.

0 votes

Merci ! Cela m'a incité à trouver le problème que j'avais. Il s'avère que j'avais deux au projet de dépendance, et celui qui prenait la priorité était une DLL précédemment construite dans le dossier bin. J'ai supprimé la DLL et la référence malveillante et j'ai reconstruit le programme, tout s'est compilé correctement.

7voto

Greg D Points 24218

Tout d'abord, je vérifierais que les informations générées par votre projet ne sont pas corrompues. Faites un nettoyage et une reconstruction de votre solution.

Si cela n'aide pas, une chose que j'ai vu fonctionner dans le passé pour les problèmes de conception est d'ouvrir un projet Windows forms, puis de le refermer. Mais c'est une méthode un peu "chicken-entrails", alors ne retenez pas votre souffle.

0 votes

J'ai essayé de nettoyer et de reconstruire avec votre solution mais sans succès. J'ai essayé de supprimer/ajouté/nettoyer/reconstruire uniquement le projet d'application WPF et toujours pas de chance :(

0 votes

Un nettoyage suivi d'une reconstruction a réglé le problème. Cependant, ce problème réapparaît tous les jours. Au moins, je peux faire mes choses jusqu'à ce que je le résolve complètement.

6voto

Causas Points 970

Il est possible de fermer et de redémarrer Visual Studio. Il semble parfois se "bloquer".

4voto

Sandeep Goundar Points 11

Celui-là a marché pour moi. Dans votre classe, là où le nom de la classe est défini, par exemple : Public class ABC, enlevez un caractère et attendez un peu. Votre liste d'erreurs va augmenter parce que vous avez changé le nom. Maintenant, remettez le caractère que vous avez tapé. Cela a marché pour moi, j'espère que cela marchera pour vous aussi. Bonne chance !!!

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