Puis-je créer une macro Visual Studio pour lancer un projet spécifique dans le débogueur?

StackOverflow https://stackoverflow.com/questions/96250

Question

Mon projet contient les composants client et serveur dans le même fichier de solution. Habituellement, le débogueur est configuré pour les démarrer ensemble, mais c’est souvent le cas lorsque je démarre le serveur en dehors du débogueur afin de pouvoir démarrer et arrêter le client si nécessaire lorsque je travaille uniquement avec des éléments côté client. (c'est beaucoup plus rapide).

J'essaie de ne pas avoir à me soucier de fouiller dans l'Explorateur de solutions pour démarrer des projets individuels. Je préférerais simplement coller un bouton dans la barre d'outils qui appelle une macro qui lance le débogueur pour des projets individuels (tout en laissant "F5"). tapez seul le débogage pour démarrer les deux processus).

J’ai essayé d’enregistrer, mais cela n’a vraiment rien apporté d’utile.

Jusqu'à présent, tout ce que j'ai réussi à faire est de localiser l'élément de projet dans l'explorateur de solutions:

 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 de macros a essayé de le faire. Je ne suis pas sûr si la navigation dans le modèle d'objet d'interface utilisateur est la bonne approche ou si je devrais envisager plutôt de passer par le modèle d'objet Solution / Projet ).

Était-ce utile?

La solution

Ok. Cela semble fonctionner dans la plupart des contextes d'interface utilisateur (tous?) À condition que la solution soit 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

Autres conseils

À partir d'un complément C #, les éléments suivants ont fonctionné pour moi:

Dte.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate();
Dte.ToolWindows.SolutionExplorer.GetItem("SolutionName\\SolutionFolderName\\ProjectName").Select(vsUISelectionType.vsUISelectionTypeSelect);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top