Posso criar uma macro Visual Studio para lançar um projeto específico no depurador?
-
01-07-2019 - |
Pergunta
Meu projeto tem componentes de cliente e servidor no mesmo arquivo de solução. Eu costumo ter o conjunto depurador para iniciar-los juntos quando a depuração, mas é muitas vezes o caso em que eu iniciar o servidor do lado de fora do depurador para que eu possa iniciar e parar o cliente conforme necessário quando se trabalha no lado do cliente só coisas. (Isso é muito mais rápido).
Eu estou tentando me salvar o incômodo de picar ao redor no Solution Explorer para iniciar projetos individuais e preferem se ater apenas um botão na barra de ferramentas que chama uma macro que inicia o depurador para projetos individuais (deixando "F5" tipo depuração sozinho para iniciar tanto processess).
Eu tentei a gravação, mas que realmente não resultar em nada de útil.
Até agora, tudo o que eu consegui fazer é localizar o item de projeto no explorador solução:
Dim projItem As UIHierarchyItem
projItem = DTE.ToolWindows.SolutionExplorer.GetItem("SolutionName\ProjectFolder\ProjectName").Select(vsUISelectionType.vsUISelectionTypeSelect)
(Isto é baseado vagamente sobre como o gravador de macro tentou fazê-lo. Eu não tenho certeza se navegar no modelo de objeto UI é a abordagem correta, ou se eu deveria estar olhando para atravessar o modelo de objeto Solution / Projeto vez ).
Solução
Ok. Isto parece o trabalho de mais UI (?) Todos os contextos forneceu a solução é carregada:
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
Outras dicas
A partir de um C # add-in, o seguinte trabalhou para mim:
Dte.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate();
Dte.ToolWindows.SolutionExplorer.GetItem("SolutionName\\SolutionFolderName\\ProjectName").Select(vsUISelectionType.vsUISelectionTypeSelect);