2008-09-18 7 views
5

Mon projet contient des composants client et serveur dans le même fichier de solution. J'ai généralement le débogueur défini pour les démarrer ensemble lors du débogage, mais c'est souvent le cas lorsque je démarre le serveur en dehors du débogueur afin que je puisse démarrer et arrêter le client si nécessaire lorsque je travaille uniquement sur le client. (c'est beaucoup plus rapide). J'essaie de me sauver la peine de fouiller dans l'Explorateur de solutions pour démarrer des projets individuels et préfèrerais simplement coller un bouton sur la barre d'outils qui appelle une macro qui démarre le débogueur pour des projets individuels (tout en laissant "F5" type débogage seul pour démarrer les deux processess).Puis-je créer une macro Visual Studio pour lancer un projet spécifique dans le débogueur?

J'ai essayé d'enregistrer, mais cela n'a vraiment pas donné quelque chose d'utile.

Jusqu'à présent, tout ce que j'ai réussi à faire est de trouver l'élément de projet dans l'explorateur de solution.

Dim projItem As UIHierarchyItem 

projItem = DTE.ToolWindows.SolutionExplorer.GetItem("SolutionName\ProjectFolder\ProjectName").Select(vsUISelectionType.vsUISelectionTypeSelect) 

(Ceci est vaguement basé sur la façon dont l'enregistreur macro a essayé de le faire, je ne suis pas Assurez-vous que la navigation dans le modèle d'objet de l'interface utilisateur est la bonne approche, ou si je devrais envisager de passer par le modèle d'objet Solution/Projet à la place).

Répondre

6

Ok. Cela semble fonctionner de la plupart UI (tous?) Des contextes à condition que la solution est chargée:

Sub DebugTheServer() 
    DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate() 
    DTE.ActiveWindow.Object.GetItem("Solution\ServerFolder\ServerProject").Select(vsUISelectionType.vsUISelectionTypeSelect) 
    DTE.Windows.Item(Constants.vsWindowKindOutput).Activate() 
    DTE.ExecuteCommand("ClassViewContextMenus.ClassViewProject.Debug.Startnewinstance") 
End Sub 
0

D'un add-in C#, ce qui suit a fonctionné pour moi:

Dte.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate(); 
Dte.ToolWindows.SolutionExplorer.GetItem("SolutionName\\SolutionFolderName\\ProjectName").Select(vsUISelectionType.vsUISelectionTypeSelect); 
+0

Qui C# Add-in? – vendettamit

+0

Je dis qu'il devrait fonctionner à partir de n'importe quel complément de Visual Studio. –

+0

Peut-être qu'il me manque quelques références en dehors de EnvDtE amd EnvDte80. Oui? – vendettamit

Questions connexes