2010-01-06 2 views
5

J'utilise la version x64 de Windows 7. Mon application utilise des serveurs COM (serveurs COM x86 natifs habituels) qui ne peuvent pas être chargés dans le contexte x64. J'ai donc décidé de l'exécuter en tant qu'application x86 en utilisant WOW, donc j'ai défini la cible de la plateforme comme x86.Débogage de l'application x86 .NET sur Windows x64 dans VS2008

Mais le débogueur Visual Studio 2008 a commencé à afficher des messages tels que "Le fichier source est différent ...." pour tous les fichiers source lorsque j'essaie de le déboguer. Quelle est la raison de ce comportement? Cette question est née il "The source file is different...." message in Visual Studio 2008 is result of debugging x32 apps on x64 Windows

Mise à jour: Je nettoyais solution, solution reconstruite, retirée obj, etc. bin et dossiers, remis en marche l'ordinateur, réinstallé Visual Studio ... Alors, quoi d'autre pourrait être le problème?

Update2: Si vous créez un nouveau projet d'application Windows et que vous modifiez la plate-forme cible en x86, vous verrez ce problème. Mais si vous supprimez Settings1.settings du projet le problème sera éliminé !!. Une idée?

Update3: http://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/bc297668-65b4-46e8-969e-c7a6340d33b6

+0

Avez-vous nettoyé les dossiers de sortie de votre projet et vérifié dans le journal de construction que la construction a vraiment réussi? –

+0

J'ai répondu dans la description de la question. –

+0

Et si vous remettez votre plate-forme cible en mode x64, le débogage fonctionne à nouveau? –

Répondre

4

Windows 7 définit le mode de compatibilité Windows Xp sp 3 pour VS 2008 par défaut.La modification de la compatibilité avec le mode Windows Vista SP2 a résolu les problèmes.

+0

Pour moi, cela a également fonctionné pour Visual Studio 2010. – andnil

+0

Cela a fonctionné pour moi mais j'ai choisi Windows 7 Mode Merci – Xenon

4

Le message d'erreur que vous obtenez est sans rapport avec le débogage d'une application peu WOW64. C'est encore moins un problème ici car Visual Studio exécute un processus 32 bits à l'intérieur de WOW64. Donc, au lieu de x64 -> x86, vous faites une session de débogage x86 -> x86.

Ce qui se passe ici, c'est que Visual Studio lit la somme de contrôle pour les fichiers source hors de la PDB et il ne correspond pas à la somme de contrôle des fichiers que vous utilisez pour déboguer l'application. Les causes les plus probables de cette situation sont

  • Expiré de l'APB
  • En utilisant les fichiers source incorrectes. Ceci est plus fréquent que vous ne le pensez dans les scénarios de branchement où vous pouvez facilement récupérer la mauvaise version du fichier.

La façon dont je déboguer généralement à travers c'est

  • Fermer VS et supprimer manuellement tous les binaires et les répertoires binaires
  • Restart VS et reconstruire
  • Fermer VS
  • Restart VS et se connecter au projet en cours sans ouvrir la solution
  • Ensuite, ouvrez manuellement les fichiers
+0

Voir ma mise à jour 2 –

1

Vous pouvez également vérifier le type de construction x86. Lorsque vous l'avez créé, vous ne pouvez pas copier les paramètres de la version par défaut et, par conséquent, aucun code n'est généré lors de l'exécution de votre application.

Affichez les propriétés de la solution et consultez la page Propriétés de configuration \ Configuration. Ensuite, assurez-vous que tous les projets sont cochés sous Compilez pour le combo Config/Platform que vous utilisez.

+0

En effet, les projets étant exclus de la construction dans la configuration actuelle me semble une erreur courante. Cependant, un nettoyage total de la solution (comme l'OP l'a fait) devrait vous faire remarquer cela? –

+0

True. Mais il ignore les erreurs du compilateur/les messages de construction qu'il n'a peut-être pas vu ce probable. Aussi, s'il devait lui dire de construire explicitement après un nettoyage, il ne verrait pas non plus ce problème. –

+0

Je n'ai pas fait x86 "type de construction", je viens de changer la cible de la plate-forme sur la page Build des propriétés du projet de Any CPU à x64. C'est tout. –