Le nom n'existe pas dans L'erreur namespace de XAML

utilisant VS2012 travaillant sur un VB.NET WPF application. J'ai une simple application de tutoriel MusicPlayer que j'utilise pour apprendre WPF. Je suis en train de convertir une version C# du tutoriel en VB.NET pas à pas.

il a 2 classes dans l'application qui sont à la fois sous le même espace de noms. Je suis capable de faire référence à L'espace de noms dans XAML mais quand j'essaie de faire référence à l'objet de classe dans XAML j'obtiens une erreur et je ne suis pas capable de compiler.

chose Étrange est que L'IntelliSense fonctionne très bien avec à la fois le référencement de l'espace de noms via la balise xmlns:c= et aussi en tapant l'objet de classe en utilisant <c: Mais l'objet est souligné et des erreurs sont générées en essayant de construire ou de travailler dans le concepteur.

The .les fichiers de classe vb se trouvent dans un dossier appelé Controls. Le Namespace racine principal du projet est laissé en blanc. La classe est codée comme ça...

Namespace MusicPlayer.Controls
    Public Class UpdatingMediaElement
       .... code here
    End Public
End Namespace

le XAML ressemble à ceci

(espace de noms défini dans le <Window > tag

xmlns:c="clr-namespace:MusicPlayer.Controls"

(objet défini dans un <Grid> )

  <c:UpdatingMediaElement Name="MyMediaElement" />

(erreur affichée) Le nom "UpdatingMediaElement "n'existe pas dans l'Espace-nom" clr-namespace:MusicPlayer.Contrôle."

vous ne savez pas ce qui ne va pas ou comment le corriger?

85
demandé sur Jeff Davis 2013-02-02 23:40:00

24 réponses

quand vous écrivez votre code wpf et VS dire que "le nom ABCDE n'existe pas dans l'espace de noms clr-namespace:ABC". Mais vous pouvez totalement construire votre projet avec succès, il n'y a qu'un petit inconvénient parce que vous ne pouvez pas voir L'UI concevoir (ou tout simplement pour nettoyer le code).

Essayer de faire ceux-ci:

  • Dans VS, cliquez droit sur votre Solution -> Propriétés -> Propriétés de Configuration

  • un nouveau dialogue s'ouvre, essayez de changer les configurations du projet de Debug à Release ou vice versa.

après cela, reconstruisez votre solution. Il peut résoudre votre problème.

154
répondu Toan Darkprince 2014-08-01 11:07:28

si l'assemblage est différent de l'Espace-nom dans lequel votre classe est contenue, vous devez le spécifier explicitement.

ex: -

xmlns:Local="clr-namespace:MusicPlayer.Controls;assembly=MusicPlayer"
40
répondu Vasanth Sriram 2015-08-11 07:51:34

essayez de changer la plate-forme cible de construction à x86 et la construction du projet.

J'ai remarqué via Subversion que j'ai apparemment changé la cible de la plate-forme de construction du projet à x64. C'était le seul changement que j'avais fait. Après avoir fait ce changement, le code a fonctionné pendant un court moment avant qu'il ne commence à montrer la même erreur que vous avez éprouvé. J'ai changé la cible de la plate-forme en x86 pour tester et soudainement mon concepteur travaillait à nouveau. Par la suite, je l'ai changé en x64, et le problème a complètement disparu. Je soupçonne que le concepteur construit une sorte de code caché dans x32 et que le fait de changer la plate-forme de construction x64 le casse lorsque vous faites des changements de code.

23
répondu teynon 2017-06-23 16:30:57

j'ai vu ce problème disparaître en nettoyant le Cache XAML Design Shadow. J'avais le problème avec la mise à jour 1 de Visual Studio 2015.

dans Visual Studio 2015 le Cache est situé ici:

%localappdata%\Microsoft\VisualStudio.0\Designer\ShadowCache

Processus:

  1. faites un clic droit sur la solution dans L'Explorateur de solutions et choisissez "solution propre"
  2. Shutdown Visual Studio
  3. supprimer le dossier ShadowCache
  4. rouvre le projet de studio visuel
  5. reconstruire la solution

et voilà plus d'erreurs d'espace de noms.

20
répondu Jasper H Bojsen 2018-04-07 13:18:12

dans mon cas, c'était à cause de autres erreurs de compilation . Lorsque d'autres erreurs ont été résolues, cette erreur apparemment liée a également été supprimée de la liste. Surtout les erreurs en bas de la liste des erreurs et sur les pages que vous avez modifiées récemment.

alors ne faites pas attention à cette erreur directement et concentrez-vous sur autres erreurs dans un premier temps.

19
répondu Iman Abidi 2017-05-30 09:04:44

Je ne sais pas si cela aidera quelqu'un d'autre

je suis nouveau à WPF et encore un novice avec VB.net - donc j'ai supposé que cette erreur était causée par le fait que j'ai fait summit silly........ supposons que j'ai été vraiment! J'ai réussi à m'en débarrasser en déplaçant mon projet d'un lecteur partagé vers un de mes lecteurs locaux. L'erreur a disparu, le projet compile parfaitement pas d'autres problèmes-encore. On dirait que VS2015 a encore des problèmes avec les projets tenus sur un lecteur partagé.

6
répondu Supa Stix 2016-03-14 18:12:30

peut-être une autre solution pour quand le projet compile mais l'erreur XAML montre:

  1. Dans le solution explorer, sur le nœud du projet qui contient le code xaml
  2. faites un clic droit sur le projet et choisissez 'Unload Project'
  3. faites un clic droit sur le projet et choisissez "Recharger le projet" Assurez-vous que votre projet est toujours choisi comme "projet de démarrage". Si non:
  4. clic-Droit sur le projet et choisissez "Définir comme projet de démarrage'

pas besoin de reconstruire, ou fermer visual studio.

4
répondu Simon 2017-03-24 14:33:05

Jesus... C'est toujours un problème cinq ans plus tard dans Visual Studio 2017. Puisque je suis nouveau à WPF, j'étais sûr que le problème était en quelque sorte moi, mais non, tout compilé et exécuté correctement.

j'ai essayé de reconstruire, nettoyer et reconstruire, passer entre les sorties x86 / x64, redémarrer Windows, nettoyer le dossier ShadowCache, ajouter ";assembly={mon nom d'Assemblée principal}" à la déclaration D'espace de noms XML, rien n'a fonctionné! La seule chose qui a fait:

a placé ma classe statique de commandes (dans mon cas, l'accord était sur le fait de faire découvrir le design à mes commandes WPF) dans son assemblage séparé et de changer le nom de l'assemblée à la place de celui-ci.

3
répondu Jonas 2017-12-15 09:36:09

j'ai eu le même problème , et dans mon cas la vue de la conception du Markup m'a demandé de reconstruire la solution et ne m'a pas montré la disposition du formulaire avec ce message: Design view is unavailable for x64 and ARM target platforms , ou Build the Project to update Design view .

il ne se résout pas en reconstruisant la solution (ni la vue de conception ni le "le nom n'existe pas dans l'espace de nom" erreur)

je pense que c'était parce que j'avais joué avec les paramètres de la Solution - > Propriétés > Propriétés de Configuration

j'ai finalement résolu le problème avec 2 emplois:

  1. vérification de toutes les cases à cocher sur la colonne de construction de la page: Solution - > Propriétés - > Propriétés de Configuration
  2. changement de la configuration de la solution de Debug à Release ou vice versa.

je pense que c'est un bug Dans Visual Studio2012 Update 2.

2
répondu Ehsan Abidi 2013-06-02 14:22:37

Le même problème fléaux Visual studio 2013, le Service Pack 4. J'ai aussi essayé avec Visual studio 2015 Preview, avec les mêmes résultats.

c'est juste une limitation du visualiseur WPF que L'équipe de Visual Studios n'a pas corrigée. Comme preuve, la construction en mode x86 permet le Visualiseur et la construction en mode x64 le désactive.

étrangement assez de travaux intellisense pour Visual Studios 2013, Service Pack 4.

2
répondu Trevy Burgess 2015-01-15 23:24:46

j'ai eu ce problème récemment en utilisant VS mise à jour 2015 3 pour mon projet WPF dans .NET 4.6.2. La copie de mon projet était dans un dossier réseau , Je l'ai déplacé localement et cela a résolu le problème.

cela pourrait résoudre d'autres types de problèmes, car il semble que VS 2015 n'aime pas les chemins de réseau. Une autre question qui est un gros problème pour eux est la synchronisation des dépôts git si mon projet est dans un chemin réseau, également résolu en le déplaçant localement.

2
répondu gbdavid 2016-09-28 10:37:40

semble que ce problème peut être résolu par une variété de "trucs."

dans mon cas, j'avais construit/reconstruit/nettoyé toute la solution, au lieu de juste le projet sur lequel je travaillais dans la solution. Une fois que j'ai cliqué sur "construire [mon projet]", le message d'erreur s'est effacé.

1
répondu gusmally 2016-07-25 23:40:41

la solution pour moi était de débloquer le DLLs Assemblée. Les messages d'erreur que vous recevez ne l'indiquent pas, mais le concepteur de XAML refuse de charger ce qu'il appelle des assemblages "sandboxed". Vous pouvez les voir dans la fenêtre de sortie lorsque vous générez. Les DLLs sont bloquées si elles sont téléchargées à partir d'internet. Pour débloquer votre assemblée de tiers DLLs:

  1. clic droit sur le fichier DLL dans L'Explorateur Windows et sélectionnez Propriétés.
  2. en bas de l'onglet Général, cliquez sur le bouton "Débloquer" ou cochez la case.

Note: ne débloquez les LLD que si vous êtes sûr qu'elles sont sûres.

1
répondu Jordan 2017-02-21 15:15:44

Dans mon cas, le contrôle de l'utilisateur a été ajouté au projet principal. J'ai essayé diverses solutions ci-dessus en vain. Soit j'obtiendrais le Markup invalide mais la solution compilerait et fonctionnerait, ou j'ajouterais le xmlns:c=" clr-namespace: MyProject;assembly = MyProject " et alors le markup s'afficherait, mais j'obtiendrais une erreur de compilation que la balise n'existe pas dans L'espace de noms XML.

enfin, j'ai ajouté un nouveau projet de bibliothèque de contrôle utilisateur WPF à la solution et j'ai déplacé mon utilisateur contrôle du projet principal vers celui-là. Ajouté la référence et changé l'assemblage pour pointer vers la nouvelle bibliothèque et finalement le markup travaillé et le projet compilé sans erreur.

1
répondu Kevin Cook 2017-04-03 15:59:30

j'ai parcouru toutes les réponses et personne ne m'a aidé. Finalement j'ai pu le résoudre par moi-même, donc en présentant la réponse comme elle pourrait aider les autres.

dans mon cas, la solution avait deux projets, l'un contenant les modèles (disons que le nom du projet et de l'assemblage était modèles ) et un autre contenant les vues et les modèles de vue (selon notre convention: le projet, le nom de l'assemblage et l'espace de nom par défaut étaient modèles.Moniteur ). Le Modèle.Projet de suivi des modèles référés.

dans les modèles.Projet Monitor, dans l'un des xaml I inclus le namespace suivant: xmlns:moniteur="clr-namespace:Modèles.Moniteur "

je soupçonne que MsBuild et Visual Studio, puis ont été erroring arrière comme ils ont essayé de trouver un "Moniteur" type en assemblée de "Modèles" . Pour résoudre, j'ai essayé ce qui suit:

  1. xmlns:moniteur="clr-namespace:Modèles.Monitor; assembly= "- qui est valide si l'espace de noms est dans le même assemblage que selon https://msdn.microsoft.com/en-us/library/ms747086 (v=V110).aspx
  2. a également essayé la déclaration explicite d'espace de noms: xmlns:moniteur="clr-namespace:Modèles.Moniteur; assemblage = modèles.Moniteur "

ni l'un ni l'autre de ces éléments n'a été travaillé.

finalement j'ai abandonné, et comme un travail autour a déplacé le UserControl que j'essayais d'utiliser vers un autre espace de nom:" ModelsMonitor " . J'ai pu compiler fine après ça.

1
répondu Sandip 2017-06-02 19:07:45

VB.NET n'ajoute pas automatiquement l'information Namespace basée sur la structure du dossier comme il le fait dans C#. Je pense que je suis en train de suivre le même tutoriel que vous (enseignez-vous WPF en 24 heures), et de faire la même conversion en VB.

j'ai trouvé que vous devez ajouter manuellement les informations de L'espace de noms à à la fois la classe XAML et le XAML.VB code derrière pour pouvoir utiliser les espaces de noms comme décrit dans le livre. Même alors, VB n'est pas Assignez automatiquement le Namespace à L'ensemble comme il le fait dans VB.

il y a un autre article ici qui montre comment inclure ceci dans vos gabarits de projet afin qu'il ne construise l'information Namespace automatiquement - ajouter automatiquement namespace lors de l'ajout de nouvel article

0
répondu Jeremy 2017-05-23 12:26:38

dans la page de propriété solution, vérifiez la plate-forme de l'ensemble qui contient" UpdatingMediaElement "et les assmeblies qui contiennent l'une des superclasses et interfaces à partir desquelles" UpdatingMediaElement " sous-classes ou instruments. Il semble que la plate-forme de toutes ces assemblées doit être "AnyCPU".

0
répondu jgong 2014-09-14 21:56:26

une autre cause possible: un événement post-build est de supprimer la DLL projet du dossier build.

Pour clarifier: concepteur WPF peut signaler "Le nom de XXX n'existe pas dans l'espace de noms...", même lorsque le nom existe dans l'espace de noms et que le projet construit et court très bien si un événement de post-construction supprime le projet DLL du dossier de construction (bin\Debug, bin\Release, etc.). J'en ai personnellement fait l'expérience dans Visual Studio 2015.

0
répondu R.T. 2016-02-15 20:12:37

Ok, donc aucun de ces conseils n'a fonctionné pour moi, malheureusement. J'ai pu finalement résoudre le problème. Il semble que Visual Studio ne fonctionne pas très bien avec les lecteurs réseau. J'ai résolu ce problème en déplaçant le projet de la commande partagée à mon local et recompilé. Plus d'erreurs.

0
répondu Noahm888 2016-07-28 18:46:48

essayez de vérifier vos références d'assemblage. Si vous avez un point d'exclamation jaune sur les références de projet il y a un problème là-bas et vous obtiendrez toutes sortes d'erreurs.

si vous savez que la référence du projet est correcte, vérifiez le cadre cible. Par exemple, avoir un projet utilisant le cadre de référence 4.5 un projet avec un cadre de référence 4.5.2 n'est pas une bonne combinaison.

0
répondu Tommy Andersen 2016-08-24 18:28:53

ajout à la pile.

Mine était le nom de l'Assemblée de la demande WPF était le même nom de l'Assemblée qu'une dll référencée. Alors assurez-vous que vous n'avez pas de noms d'assemblage dupliqués dans aucun de vos projets.

0
répondu Ceres 2017-03-01 18:10:25

j'avais la solution stockée sur un partage de réseau et chaque fois que je l'ouvrais j'obtenais l'avertissement sur les sources non fiables. Je l'ai déplacé vers un lecteur local et le "namespace n'existe pas" d'erreur s'en alla.

0
répondu Kevin S. Miller 2017-05-10 22:05:17

aussi essayer de clic droit sur votre projet->propriétés et changer la cible de la plate-forme à N'importe quel CPU et reconstruire, il fonctionnera alors. Cela a fonctionné pour moi

0
répondu Corne 2018-02-16 12:40:54

Ajouter un constructeur vide pour votre modèle de vue et la solution de reconstruction. J'ai essayé tellement de solutions qui ne fonctionnaient pas, mais ça m'a résolu.

-1
répondu Yusuf Özcan 2017-10-05 20:48:29