Manque d'information sur le type et la localisation d'une erreur
-
segunda-feira, 4 de abril de 2011 22:03
Dans un fichier XAML, lorsque j'essaie d'appeler un objet(ici:monComposant) qui n'existe pas dans mon assembly courant de cette façon:
BasedOn="{StaticResource {x:Type local:monComposant }}
Avec:
local : Nom de mon assembly(je suis dans le même assembly)
monComposant : L'objet à chercher
On a alors une erreur ; sans aucune information sur la localisation et le type d'erreur!:
<Erreur de build inconnue, la référence d'objet n'est pas définie à une instance d'un objet>
Remarque:
lorsque l'élément à chercher est dans un autre assembly, l'erreur est bien renseignée
Exemple de code provoquant cette erreur:
Ici, " MyButton" n'existe pas dans mon projet et ça provoque le bug en question
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
xmlns:local="clr-namespace:nomDeMonAssembly">
<Window.Resources><Style TargetType="{x:Type Button}" x:Key="monStyle" BasedOn="{StaticResource {x:Type local:MyButton}}">
</Style></Window.Resources>
</Window>- Tipo Alterado Pascal SailleModerator terça-feira, 26 de junho de 2012 04:37 attente de feedback
Todas as Respostas
-
terça-feira, 5 de abril de 2011 04:57Moderador
Bonjour,
Si MyButton n'est pas defini dans ton projet ou dans un autre NameSpace.
La déclaration dans le xaml devrai être :
xmlns
:local="clr-namespace:nomDeMonAssembly;assembly=nomDeMonAssembly"
Car sinon à vu d'oeil le reste me parait correct.
Cordialement, Pascal. -
terça-feira, 5 de abril de 2011 21:32
Bonjour,
Oui, justement,
si jamais par erreur, on pense que MyButton était dans l'assembly courant,
alors on a une erreur, car MyButton n'est pas trouvée, et là, aucune information sur l'erreur!!
le message d'erreur n'indique pas par exemple que:la ressource recherché n'existe pas, ou donner le numéro de ligne...
et du coup, on peut chercher des heures et des heures pour débuguer
Cordialement
-
quarta-feira, 6 de abril de 2011 05:16Moderador
je ne sais pas quel version de Visual Studio tu possèdes ?
Mais dans la version visual studio 2010 pour moi il n'y à pas de problème.
Car si je tape local: dans le xaml, l'intellisense se déclenche et me propose que des contrôle que je possède dans le NameSpace courant.
Et si jamais tu fais un copier coller avec local:MyButton il t'avertit d'une erreur de génération.
Sauf bien sur dans ton cas quand tu fais {StaticResource {x:Type local:MyButton}} l'intellissence ne fonctionne pas.
Par contre à la compilation tu as l'erreur suivante :
- Erreur de génération Inconnue, "La référence de l'objet n'est pas définie à une instance d'un objet" et il indique le nom du fichier xaml posant probème.
Et si tu ouvres le designer et que tu le recharge il va même t'indiquer une erreur supplémentaire :
- Le type local:MyButton est introuvable et il t'indique le nom du fichier avec la ligne ou c'ets produit l'erreur.
Je sais pas si cela répond à ta question ?
Cordialement, Pascal. -
segunda-feira, 11 de abril de 2011 10:57
Bonjour,
C'est peut être liée aux configuration utilisées :
Moi aussi j'utilise visual studio 2010!(Ultimate),
Tu utilise quelle version de VS 2010?:Ultimate, professionnelle...?
Je suis sous Windows7 et toi?
Cordialement
-
segunda-feira, 11 de abril de 2011 13:56Moderador
je suis sous visual studio 2010 pro et sous windows 7 64 bits.
Cordialement, Pascal.
Développeur Wpf/SilverLight/WinPhone7
-
segunda-feira, 11 de abril de 2011 19:14
Bonjour,
C'est étrange que cela fonctionne chez toi et pas chez moi!
Tu as essayé exactement le même code que j'ai posté?
A- tu une autre version de VS?, pour tester dessus?:exemple VS express
Cordialement
-
segunda-feira, 11 de abril de 2011 19:21Moderador
je sais pas si c'est une option que j'ai configuré ?
Non je n'ai pas d'autres versions de Visual Studio, désolé.
Cordialement, Pascal.
Développeur Wpf/SilverLight/WinPhone7
-
terça-feira, 5 de junho de 2012 13:50
Bonjour,
Tout d'abord j'ai une remarque sur le style pour le type Button -> il est basé sur le style par défaut du type MyButton. Soit MyButton hérite de Button, soit c'est un type à part. Dans les 2 cas, Les Setters de MyButton peuvent ne pas correspondre avec ceux de Button. Pour cette raison, il est plus courant de se baser sur un style d'un type identique ou parent...
Concernant l'erreur, c'est une nulleReferenceException qui remonte jusqu'à la vue mais qui n'est probablement pas déclenchée par le xaml de la vue, c'est très probablement pour ca que tu n'as pas plus de détail. Le problème vient surement d'un morceau de code qui n'est pas assez défendu quelque part (if toto != null par exemple)... myButton peut être?
Tu sauras qui l'a déclenchée en remontant la StackTrace de l'erreur. N'hésites pas à poster cette stackTrace si nécessaire (celle de la première exception, penser à regarder les innerExceptions)Bon courage!
Charles
-
quarta-feira, 6 de junho de 2012 18:17
Bonjour,
Voir peut-être http://msdn.microsoft.com/fr-fr/library/dd409960.aspx ? mais cela semble plutôt être un simple niveau de trace...
Ou dans un premier temps jouer peut-être sur le niveau de trace du "build" (je ne trouve plus où est celui là l'instant) ? En fait, j'ai l'impression que l'erreur que vous indiquez ne concerne pas directement l'erreur présente dans votre XAML mais que cette erreur provoque une erreur pendant le build et que c'est cette erreur qui s'affiche. Donc il faudrait plutôt essayer de comprendre ce qui perturbe le processus de build. Eventuellement essayer peut-être un "regénérer tout" ou un "nettoyer" ?
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
-
sábado, 9 de junho de 2012 18:31Moderador
Bonjour,
Est-ce que vous avez testé la solution proposée ? Merci de partager avec nous les résultats,afin que d'autres personnes avec le même problème puissent profiter de cette solution.
Cordialement, Pascal.
Développeur Wpf/SilverLight/WinPhone7

