Можно ли создать макрос Visual Studio для запуска определенного проекта в отладчике? - PullRequest
5 голосов
/ 18 сентября 2008

Мой проект содержит компоненты клиента и сервера в одном файле решения. У меня обычно есть отладчик, настроенный на их совместный запуск при отладке, но часто я запускаю сервер вне отладчика, чтобы при необходимости работать только с клиентской частью, чтобы запускать и останавливать клиент. (это намного быстрее).

Я пытаюсь избавить себя от необходимости ковыряться в Solution Explorer, чтобы запускать отдельные проекты, и предпочел бы просто нажать кнопку на панели инструментов, которая вызывает макрос, запускающий отладчик для отдельных проектов (оставляя тип «F5»). отладка в одиночку для запуска обеих процессов).

Я попытался записать, но на самом деле это ничего не дало.

Пока все, что мне удалось сделать, это найти элемент проекта в обозревателе решений:

 Dim projItem As UIHierarchyItem

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

(Это в значительной степени основано на том, как макрос-рекордер пытался это сделать. Я не уверен, что навигация по объектной модели пользовательского интерфейса - это правильный подход, или мне следует вместо этого взглянуть на прохождение через объектную модель Solution / Project ).

Ответы [ 2 ]

6 голосов
/ 19 сентября 2008

Хорошо. Похоже, что это работает в большинстве контекстов пользовательского интерфейса (все?) При условии, что решение загружено:

 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 голосов
/ 29 августа 2015

Из надстройки C # у меня сработало следующее:

Dte.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate();
Dte.ToolWindows.SolutionExplorer.GetItem("SolutionName\\SolutionFolderName\\ProjectName").Select(vsUISelectionType.vsUISelectionTypeSelect);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...