¿Puedo crear una macro de Visual Studio para iniciar un proyecto específico en el depurador?

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

Pregunta

Mi proyecto tiene componentes de cliente y servidor en el mismo archivo de solución.Por lo general, tengo el depurador configurado para iniciarlos juntos durante la depuración, pero a menudo ocurre que inicio el servidor fuera del depurador para poder iniciar y detener el cliente según sea necesario cuando trabajo solo en cosas del lado del cliente.(esto es mucho más rápido).

Estoy tratando de ahorrarme la molestia de hurgar en el Explorador de soluciones para iniciar proyectos individuales y prefiero simplemente colocar un botón en la barra de herramientas que llama a una macro que inicia el depurador para proyectos individuales (mientras dejo la depuración de tipo "F5" sola para poner en marcha ambos procesos).

Intenté grabar, pero no resultó en nada útil.

Hasta ahora todo lo que he logrado hacer es ubicar el elemento del proyecto en el explorador de soluciones:

 Dim projItem As UIHierarchyItem

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

(Esto se basa libremente en cómo intentó hacerlo la grabadora de macros.No estoy seguro de si navegar por el modelo de objetos de la interfaz de usuario es el enfoque correcto, o si debería considerar pasar por el modelo de objetos de Solución/Proyecto).

¿Fue útil?

Solución

De acuerdo.Esto parece funcionar en la mayoría de los contextos de UI (¿todos?) siempre que la solución esté cargada:

 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

Otros consejos

Desde un complemento de C#, lo siguiente funcionó para mí:

Dte.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate();
Dte.ToolWindows.SolutionExplorer.GetItem("SolutionName\\SolutionFolderName\\ProjectName").Select(vsUISelectionType.vsUISelectionTypeSelect);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top