Могу ли я создать макрос Visual Studio для запуска определенного проекта в отладчике?

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

Вопрос

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

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

Я попробовал записывать, но это на самом деле не привело ни к чему полезному.

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

 Dim projItem As UIHierarchyItem

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

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

Это было полезно?

Решение

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

 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

Другие советы

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

Dte.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate();
Dte.ToolWindows.SolutionExplorer.GetItem("SolutionName\\SolutionFolderName\\ProjectName").Select(vsUISelectionType.vsUISelectionTypeSelect);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top