Le nom "XYZ" n'existe pas dans le namespace " clr-namespace: ABC"
je travaillais sur la création de quelques extensions de markup et j'ai commencé à avoir des comportements de VS très bizarres. J'ai extrait et mis en évidence la question de la solution distincte. Le problème est que VS ne peut pas créer un objet CLR dans XAML.
le voici:
:
<Window x:Class="WpfApplication4.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:wpfApplication4="clr-namespace:WpfApplication4">
<Window.Resources>
<wpfApplication4:Dog x:Key="doggy" />
</Window.Resources>
<Grid />
</Window>
Code derrière:
using System.Windows;
namespace WpfApplication4
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
}
classe de chien:
namespace WpfApplication4
{
public class Dog
{
}
}
App.Xaml (pas de code dans App.XAML.cs):
<Application x:Class="WpfApplication4.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
</Application>
l'Exception", j'obtiens:
Error 1 The name "Dog" does not exist in the namespace "clr-namespace:WpfApplication4". hopr1folders$vxkDocumentsVisual Studio 2012ProjectsWpfApplication4MainWindow.xaml 6 9 WpfApplication4
je suis capable d'exécuter solution, mais le concepteur échoue avec une erreur de "Markup invalide" Des idées?
Modifier
j'exécute VS mise à jour 2012 2 La même solution fonctionne en VS mise à jour 2012 1
21 réponses
votre solution fonctionne sur un réseau partagé. Les applications .Net (et Visual Studio) peuvent rencontrer des problèmes de permission / accès lorsqu'elles fonctionnent sur un réseau partagé.
Copiez votre solution sur un disque local (en toute confiance) et vous devriez être très bien.
il est possible d'obtenir un lecteur réseau travaillant avec pleine confiance - vous pouvez trouver des réponses à ce sujet sur StackOverflow et d'autres endroits - mais dans mon expérience je continue à courir dans les obstacles quand je fais ceci, alors essayez de l'éviter à moins que ce soit absolument critique pour le problème en question.
E. G. cette question donne des instructions sur la façon de procéder:
Give full trust to UNC share for Visual Studio 2012 and .Net 4.0
Je n'ai jamais essayé cela qu'avec VS2010 donc (comme indiqué dans le lien) vous pourriez avoir une meilleure joie avec 2012.
pour quiconque vient de traverser ceci maintenant, avant que vous ne fassiez quoi que ce soit d'autre... si vous êtes certain que vos classes/namespaces sont corrects et que la reconstruction n'a pas résolu votre problème:
Essayez de redémarrer Visual Studio
C'est ça!
il s'agit apparemment d'un bug de Visual Studio 2012 (qui affecte aussi toutes les autres versions supportant le développement XAML) ""
mise à jour: en cas de redémarrage Visual Studio ne fonctionne pas, redémarrez tout le PC.
mise à jour: comme mentionné dans les commentaires de @Dunk, si redémarrer Visual Studio ne fonctionne pas, essayez de supprimer le .suo fichier
j'ai vécu le même problème, mais mes fichiers sont stockés localement. Mon IValueConverter réside dans un assemblage différent de la vue qui l'utilise. Même si VS2013 IntelliSense a suggéré ce qui suit, cela n'a pas fonctionné:
xmlns:conv="clr-namespace:MySharedAssembly.Converters"
après que j'ai explicitement ajouté l'assemblage à la fin, il a fonctionné:
xmlns:conv="clr-namespace:MySharedAssembly.Converters;assembly=MySharedAssembly"
je suis resté sur cette erreur pendant des heures. Les assemblages et les espaces de noms étaient corrects, les Classes et les références étaient correctes aussi. Compilez et lancez ok, seul le concepteur avait des problèmes avec moi. La seule chose qui a fonctionné
- à des fins de conception swtich de x64 x86
- pour exécuter et déboguer revenir à x64
j'utilise le portable 3d party.bibliothèque que j'avais seulement en version x64.
a téléchargé DLL solution
- Débloquer le .fichier dll
- faites un clic droit et sélectionnez Propriétés
- le débloquer dans l'onglet" Général "(voir image)
- assure VS revalide le XAML (peut-être en le redémarrant)
il se passe encore dans VS 2015. J'ai pris le SomeConverter dans l'Application.xaml:
<Application.Resources>
<!--Value Converters-->
<local:SomeConverter x:Key="mySomeConverter"/>
Ctrl-Maj-B
Remettre dans - et cela a fonctionné.
créez un lien symbolique vers le partage de réseau sur votre disque local.
passez à commandline et tapez mklink /D C:\LOCALFOLDER \ YOURNETWORKPATH
ouvrez ensuite les projets de votre dossier local et tous les problèmes disparaissent. Maintenant, tous les fichiers seront toujours sur votre partage réseau.:)
je commençais un nouveau projet et d'avoir ce problème. Aucune des solutions énumérées ici n'a fonctionné pour moi, y compris la suppression du fichier suo, le déchargement/rechargement du projet, le redémarrage de VS, etc.
ce qui a fonctionné pour moi était, parce que c'était un nouveau projet, Je ne l'avais pas encore construit. J'ai enlevé la Fenêtre.DataContext element au presse-papiers, construit le projet une fois (shift-ctrl-b), puis ajouté l'élément et il a fonctionné immédiatement.
avant d'essayer une solution étendue, essayez ce qui suit:
j'ai eu exactement le même problème, j'ai fermé la fenêtre/forme qui était à l'origine de l'erreur et j'ai ensuite lancé le projet,
L'erreur semble clair une fois que le projet a exécuté avec succès et n'est pas rentré.
espérons que cela aidera quiconque recherche une solution rapide.
j'ai eu la même erreur dans Visual Studio 2015 et j'ai réussi à faire travailler le concepteur en décochant le bouton"Désactiver le code du projet".
cela m'agace depuis des années 2008, 10, 12, 13.
chaque fois que cela se produit (et oui, je travaille sur un partage de réseau - Je ne peux pas l'éviter), je ferme VS, renommer le dossier et rouvrir le projet. 9 fois sur 10, cela fonctionne. Pendant un certain temps.
pour toute autre personne coincée.
ce qui a fonctionné pour moi était de changer l'alias de l'Espace-nom de local , à n'importe quoi d'autre.
xmlns:local="clr-namespace:ExampleNameSpace.Folder" />
<Grid>
<StackPanel>
<local:ReferencedUserControl />
</StackPanel>
</Grid>
à
xmlns:blah="clr-namespace:ExampleNameSpace.Folder" />
<Grid>
<StackPanel>
<blah:ReferencedUserControl />
</StackPanel>
</Grid>
Espérons que cette aide!
Avait le même problème. Ce qui l'a fixé pour moi était quand j'ai réalisé que la classe en question a été marquée comme internal
:
internal class MyClass
{
}
après l'avoir changé en public
, le concepteur a pu compiler le XAML correctement.
ce qui a fonctionné pour moi est de changer le MOVE
en XCOPY
Post Build
project properties
et puis re-build
le projet. Le concepteur peut vouloir la dll dans le dossier de sortie du projet. j'utilise vs 2015
après avoir redémarré Visual Studio j'ai eu une erreur IntelliSense qui m'a pointé dans la bonne direction.
parce que "Microsoft.VisualStudio.DesignTools.XAML.LanguageService.Sémantique.Métadonnées.ReflectionTypeNode' est implémenté dans la même assemblée, vous devez définir l'attribut x:Name plutôt que de la Microsoft.VisualStudio.DesignTools.XAML.LanguageService.Sémantique.Métadonnées.Réflectionpropertynode attribut.
donc j'ai changé ça:
<local:MyView Name="test"/>
à ceci:
<local:MyView x:Name="test"/>
et ça a marché. Donc, cela nous donne quoi? 42 causes possibles? Irréel...
j'ai aussi un projet sur un partage réseau et cette erreur inattendue s'est présenté. J'ai essayé toutes les suggestions ci-dessus, y compris la copie du projet sur un disque local, le nettoyage, la reconstruction et l'ouverture et la fermeture VS. Rien de tout cela n'a résolu le problème.
ce qui a fonctionné pour moi était simplement supprimer la référence à l'espace de noms dans le dossier viewmodels (xlmns:vm=" clr-namespace:Myproj.ViewModel").
j'ai ajouté le type à mon xaml (DataTemplate DataType= " {x:Type vm: myviewmodel}"). Visual studio a alors détecté que l'espace de noms manquait et j'ai cliqué sur l'invite pour ajouter l'espace de noms.
le déclarer dans un dictionnaire de ressources a fonctionné pour moi.
<Window.Resources>
<c:IsNullConverter x:Key="IsNullConverter" />
</Window.Resources>
le problème semble être que l'analyseur chie lui-même quand il voit une extension de markup comme Converter={c:IsNullConverter}}"
, mais est d'accord avec: Converter={StaticResource IsNullConverter}
.
Je pense que c'est peut-être où est le problème.
Windows 10, VS 2013
j'ai eu 3 erreurs dans le projet et je me suis concentré sur cette erreur concernant ObjectDataProvider. J'ai trouvé que cette erreur ne peut pas être résolu si le projet ne peut pas construire en raison d'autres erreurs. J'avais deux autres gestionnaires d'événements dont le code avait été supprimé. J'avais aussi besoin de supprimer le code qui tentait de relier les manipulateurs aux commandes. Puis le projet a pu construire et voir que la classe que j'essayais de faire référence à partir D'ObjectDataProvider était disponible.
le nom "XYZ" n'existe pas dans l'Espace-nom "clr-Espace-nom: ABC"
résolu!!
vérifiez si la fonction que vous voulez invoquer / la classe est présente dans l'espace de noms
Exemple Correct:
.XAML file
<Window x:Class="objectbinding.MainWindow"
<!--your xmlns:x .......
namespace1 is the project name-->
xmlns:m="clr-namespace:namespace1"
Title="MainWindow" Height="350" Width="525">
<Grid>
<StackPanel Orientation="Vertical">
<StackPanel.Resources>
<ObjectDataProvider ObjectType="{x:Type m:StringData}"
x:Key="anyname" MethodName="GetStrings"/>
</StackPanel.Resources>
ItemsSource="{Binding Source={StaticResource Runni}}" />
</StackPanel>
</Grid>
/ / StringData est le nom de classe dans xaml.cs et GetString est le Fonction
.XAML.Fichier CS
namespace namespace1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
// the class StringData is defined in namespace namespace 1
public class StringData
{
ObservableCollection<String> lst = new ObservableCollection<String>();
public StringData()
{
lst.Add("Abhishek");
lst.Add("Abhijit");
lst.Add("Kunal");
lst.Add("Sheo");
}
public ObservableCollection<String> GetStrings()
{
return lst;
}
}
}
mauvais exemple:
.XAML File
<Window x:Class="objectbinding.MainWindow"
<!--your xmlns:x .......
namespace1 is the project name-->
xmlns:m="clr-namespace:namespace1"
Title="MainWindow" Height="350" Width="525">
<Grid>
<StackPanel Orientation="Vertical">
<StackPanel.Resources>
<ObjectDataProvider ObjectType="{x:Type m:StringData}"
x:Key="anyname" MethodName="GetStrings"/>
</StackPanel.Resources>
ItemsSource="{Binding Source={StaticResource Runni}}" />
</StackPanel>
</Grid>
.XAML.CS
namespace namespace1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
//The StringData is defined in the class mainWindow not in namespace namespace1
public class StringData
{
ObservableCollection<String> lst = new ObservableCollection<String>();
public StringData()
{
lst.Add("Abhishek");
lst.Add("Abhijit");
lst.Add("Kunal");
lst.Add("Sheo");
}
public ObservableCollection<String> GetStrings()
{
return lst;
}
}
}
}
dans mon cas, cette erreur a été causée par le fait que les assemblages signés avec le "signal de retard seulement" ont été activés. La solution était d'exécuter la commande sn -Vr *
à partir de la console du développeur (en tant qu'administrateur). Cela enregistre l'assemblage pour le saut de vérification. Puis redémarrez Visual Studio.
cela peut être dû à la configuration de libération. Designer doit être utilisé à partir de la configuration de débogage.