2010-07-01 21 views
0

Nous sommes confrontés à un problème étrange. Nous avons un contrôle utilisateur écrit en WPF et nous avons ajouté un gestionnaire d'événement click dans le fichier xaml. Sur le système local, cela fonctionne comme prévu. Mais quand la construction est générée sur le serveur (où nous avons le référentiel de code), nous remarquons que la construction résultante a un bug. Le bogue est que l'événement click est généré deux fois à chaque fois pour ce contrôle. Nous utilisons un OpenFileDialog dans la fonction gestionnaire d'événements pour parcourir les images. Nous avons remarqué que la construction du système local via VS utilise CSC.exe pour construire sur le serveur, nous utilisons MSBuild.exe. Nous avons donc essayé de construire en utilisant MSBuild sur notre système local aussi. Mais le bug ne se reproduit pas sur le système local. Construire le code sur le système serveur à l'aide de VS ne reproduit pas non plus le bogue. Par conséquent, la seule façon de reproduire le bogue est de générer la compilation automatisée sur le serveur. Nous avons essayé de comparer le code IL des deux DLL (Buggy et non-buggy). Nous avons vérifié le code IL pour la fonction du gestionnaire d'événements. Le code IL est identique.Déclenchement d'événement de clic WPF deux fois dans un environnement de construction spécifique

Je ne soupçonne pas notre code puisque le bogue ne se reproduit sur notre système local en aucun cas. S'il vous plaît laissez-moi savoir si vous avez besoin de plus d'entrées/détails.

Toute aide sera appréciée.

Merci, Mishal

+0

Pouvez-vous spécifier comment l'outil de génération automatique appelle l'événement click? Est-ce une sorte d'outil de test de l'interface utilisateur qui peut avoir un bug? –

+0

@John: Il n'y a pas d'outil de test de l'interface utilisateur. Une fois la construction automatisée réussie, nous tirons la construction vers le système local via LAN, puis l'application. – mishal153

Répondre

0

BTW cela a été «fixé» (solution de contournement) assez facilement. Le bogue disparaît si le gestionnaire d'événements click du bouton est ajouté à partir du code plutôt que de XAML: | Je crois que cela pourrait être un bug MS dans le chargeur XAML. Je ne suis pas sûr si d'autres y parviennent aussi, mais nous sommes activement confrontés à ce bug dans plus de 2 endroits. Le lien manquant est dans quelles circonstances le bug apparaît. Jusqu'à présent, nous avons vu cela en cas de bouton seulement. Vous ne savez pas où cela apparaît

1

(VS utilise MSBuild.)

Dans VS, définissez

Outils \ Options \ projet et Solutions \ Construire et Run \ MSBuild sortie projet verbosité

pour 'diagnostic', puis nettoyez le projet, construisez-le et capturez le journal depuis la fenêtre de sortie.

Comparer avec la sortie de "msbuild.exe/v: diag ..." exécuté sur le serveur.

Espérons que cela va trouver la source de la disparité.

+0

J'essayais ça. Ce que j'ai fait était de construire la bibliothèque de classes sur le système local via VS, et enregistrer le journal. Puis sur le serveur, j'ai nettoyé la même DLL en utilisant VS. Ensuite, j'ai construit la DLL sur le serveur en utilisant MSBuild/v: diag ... Ensuite, j'ai enregistré le journal. Puis j'ai essayé de tirer cette DLL du serveur au système local et essayé de repro. Le bug n'a * pas * repro. Il semble donc que le bug ne s'est reproduit que lorsque nous avons construit la solution entière en utilisant MSBuild. Le journal de construction de l'ensemble de la solution sera trop volumineux, car le journal de cette DLL était assez gros :(et avait beaucoup de différences par rapport à notre journal de construction local :( – mishal153