Question

Je crée une extension IE en C # en utilisant Visual Studio 2010. Comment puis-je sur le débogage de l'extension en cours de fonctionnement dans Internet Explorer?

Était-ce utile?

La solution

Projet + Propriétés, onglet Mise au point. Sélectionnez "programme externe Start", réglez-c: \ program files l'explorateur Internet de \ iexplore.exe. Vous voulez probablement définir les « arguments de ligne de commande » sur le chemin d'un fichier HTML qui exerce votre BHO.

Définir un point d'arrêt sur le code que vous souhaitez déboguer. Internet Explorer se mettra en marche lorsque vous appuyez sur F5. Vous verrez le point d'arrêt tournant creux, ce qui indique que le point d'arrêt est pas armé. Dès que votre charge IE DLL, visible dans la fenêtre de sortie, il se transforme en un solide rouge. Et le débogueur rompt automatiquement lorsque les appels IE votre code.

Il y a une étape d'enregistrement. Ne pas toujours éviter l'utilisation gacutil.exe, il ne fait rien, mais pollue le GAC sur votre machine. Toujours favoriser l'option « Enregistrer pour COM Interop » dans l'IDE, l'équivalent de course Regasm.exe avec l'option / codebase. Pas besoin pour le GAC de cette façon. De toute façon, VS doit être en cours d'exécution élevé pour faire ces changements de configuration de la machine, commencez par un clic droit sur le raccourci et sélectionner « Exécuter en tant qu'administrateur ».

Autres conseils

Quelques choses sont très frappantes:

  1. Cette question est posée beaucoup
  2. La plupart des réponses, sinon tous, sont incomplètes ou incorrectes

Alors voilà: En VS2010. exécuter ce qui suit:

  1. Créer votre projet BHO, un bon point de départ est le suivant: Demo barre d'outils IE / BHO
  2. Créer une solution / projet similaire, allez dans « Solution Explorer », un clic droit de votre projet ou utilisez Alt + Entrée et allez dans « Propriétés »:

Propriétés du projet

  1. Assurez-vous que le profil de débogage est sélectionné:

Profil Debug

  1. Nous aurons besoin des événements post-construction pour enregistrer notre assemblée:

Définition d'un événement post construction

Ce sont les différentes commandes:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\gacutil.exe" /u "$(TargetName)"
"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\gacutil.exe" /f /i "$(TargetPath)"
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" /unregister /codebase "$(TargetPath)"
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" /codebase "$(TargetPath)"

L'ordre est important. Tout d'abord l'assemblée se désinscrit, puis enregistré. La première fois que vous exécutez cela, la construction échouera puisque ces événements post-construction échouera. Ceci est normal, la première fois que vous construisez, il n'y avait pas d'assemblée enregistré et en tant que tel il n'y a rien à désinscription. La deuxième fois que vous construisez, tout fonctionne très bien. A ce stade, après un succès, l'accumulation sans erreur, devrait entraîner IE manuellement à partir de votre BHO être visible:

Check BHO enregistré

Check BHO enregistré II

  1. Maintenant, nous aimerions également que d'être en mesure d'aller juste et appuyez sur F5, ont la construction toute chose, ouvrez Internet Explorer et attacher le débogueur. Contrairement à la croyance populaire cependant, le débogueur VS 2010 ne se fixe pas sur lui-même, pas même lors de la définition « Start programme externe » dans « Mise au point » (qui, en fait, est encore nécessaire):

external Démarrer IE

Cela va commencer IE, votre BHO devrait également fonctionner, mais les points d'arrêt ne sera pas touché.

Pour résoudre cela, nous utiliserons:

public virtual void SetSite(Object pUnkSite)
    {

#if DEBUG
        Debugger.Launch();
#endif

        ... Other code ...
    }

Cela garantit que le débogueur se joint très tôt dans le cycle de vie BHO. En savoir plus sur les détails de Nitty Gritty .

En appuyant sur F5 maintenant se traduira par quelques boîtes de dialogue vous demandant qui débogueur joindre:

dialogue de débogage I

boîte de dialogue de débogage II

Debug Dialog III

A partir de celui-ci sur elle de débogage heureux:

Les points d'arrêt peuvent être frappé!

J'espère que cela aide!

EDIT

J'ai récemment été demandé d'apporter des mises à jour à un BHO je préfère l'ancienne écrit. Revisiter mon tutoriel, j'ai remarqué quelques problèmes pourraient se présenter lors de la suivre:

1) Après avoir déployé rapidement une machine W7 avec VS2010 (comme libéré) Je suis une erreur géniale quand on a tenté de joindre le débogueur:

Je pourrait résoudre le problème en installant également VS2010 SP1 (comme je l'ai utilisé à l'origine), bien que je n'ai aucune idée pourquoi ce qui se passe.

2) En ce moment, quand on tente d'attacher le débogueur, l'instance de VS2010 tenant mon projet n'est pas dans la liste des débogueurs disponibles.

Cependant, whJe viens en annuler toutes les boîtes de dialogue et redémarrez IE, l'instance en cours d'exécution est comme par magie là-bas et je peux frapper mes points d'arrêt encore une fois. La question semble liée à des questions par d'autres .

EDIT 2

Le 2ème problème a été résolu après un redémarrage complet, tout comme dans le liée question.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top