2008-09-18 20 views
5

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 cuando se depuran, pero a menudo es el caso donde inicio el servidor fuera del depurador para poder iniciar y detener el cliente según sea necesario cuando trabajo solo en el lado del cliente. (esto es mucho más rápido).¿Puedo crear una macro de Visual Studio para iniciar un proyecto específico en el depurador?

Estoy tratando de ahorrarme la molestia de hurgar en Solution Explorer para comenzar proyectos individuales y preferiría simplemente pegar un botón en la barra de herramientas que llama a una macro que inicia el depurador para proyectos individuales (mientras deja "F5" tipo de depuración solo para iniciar ambos procesos).

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

Hasta ahora todo lo que he logrado hacer es localizar el elemento de 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 la forma en la grabadora de macros trató de hacerlo no estoy seguro 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 en su lugar).

Respuesta

6

Ok. Esto parece funcionar de la mayor parte de interfaz de usuario (todos?) Los contextos siempre que la solución se carga:

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

Desde un C# complemento, los siguientes trabajó para mí:

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

Cuál C# Add-in? – vendettamit

+0

Estoy diciendo que debería funcionar desde cualquier complemento de Visual Studio. –

+0

Puede que me falten algunas referencias aparte de EnvDtE y EnvDte80. ¿Sí? – vendettamit

Cuestiones relacionadas