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?
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
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.
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;
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.
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 .
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.