web-dev-qa-db-fra.com

Comment déboguer les extensions Visual Studio

J'écris simplement une extension VSIX pour Visual Studio 2010 et je ne sais pas comment la déboguer.

Une méthode évidente consiste à générer des messages. Le modèle d'extension utilise Trace.WriteLine(). Mais où trouver sa sortie?

87
Lu55

Les extensions Visual Studio peuvent être déboguées comme n'importe quelle autre application. Il vous suffit de configurer l'expérience de débogage pour lancer devenv avec l'extension chargée. Essayez ce qui suit

  • Faites un clic droit sur le projet et sélectionnez Propriétés
  • Accédez à l'onglet Débogage

Cliquez sur le bouton radio pour Start External Program. Pointez-le sur le binaire devenv.exe. Sur ma machine, il est situé à

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe

Sur une machine non x64, vous pouvez supprimer la partie "(x86)".

Définissez ensuite les arguments de la ligne de commande sur /rootsuffix Exp. Cela indique à Visual Studio d'utiliser la ruche expérimentale au lieu de la configuration normale Hive. Par défaut, les extensions VSIX, une fois construites, s'enregistreront dans la ruche expérimentale.

Maintenant, vous pouvez F5 et il démarrera Visual Studio avec votre VSIX comme extension disponible.

175
JaredPar

La réponse acceptée par @JaredPar est techniquement correcte, mais souffre du fait que vous devez la refaire pour chaque développeur, chaque fois que vous obtenez une nouvelle copie du code et chaque fois que le csproj.user le fichier est supprimé. Lorsque vous procédez ainsi, les paramètres sont enregistrés dans le csproj.user fichier.

Une meilleure option consiste à placer les paramètres dans le fichier csproj afin qu'ils ne soient pas perdus. Malheureusement, Visual Studio ne vous permet pas de le faire automatiquement, vous devez donc ajouter manuellement les paramètres. Heureusement, les paramètres sont les mêmes pour tous les projets.

Cliquez avec le bouton droit et déchargez le projet, puis cliquez de nouveau avec le bouton droit et modifiez le fichier de projet csproj. Dans le XML, ajoutez ce qui suit au premier PropertyGroup, par exemple juste après TargetFramework.

<StartAction>Program</StartAction>
<StartProgram>$(DevEnvDir)\devenv.exe</StartProgram>
<StartArguments>/rootsuffix Exp</StartArguments>

Cela présente les avantages suivants;

  • Il le configure pour le débogage et la publication
  • Il exécute la version de Visual Studio que vous exécutez actuellement
  • Il est vérifié dans le contrôle de code source, donc chaque développeur n'a pas à se rappeler comment le faire :)

Comme @MBulli l'indique dans les commentaires, si vous avez apporté les modifications dans la réponse acceptée, supprimez votre *.csproj.user car les paramètres qu'il contient remplaceront ceux que vous avez ajoutés au fichier csproj principal.

52
Rob Prouse

La méthode OutputWindowHelper.OutputString écrit dans le volet de la fenêtre de sortie 'Général' (Ctrl Alt o). J'ai ajouté cette ligne dans mes références .csproj pour l'obtenir dans VS 2013

<Reference Include="Microsoft.VisualStudio.Services.Integration, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />

Voir aussi cette réponse .

2
tcb

Si vous essayez de déboguer un UnitTestExtension, vous devez également attacher le débogueur aux processus vstest. *. Exe comme descibed ici . Sinon, vous pourriez voir le point d'arrêt activé mais le débogueur ne l'atteindra jamais.

0
smkanadl