Вызов функции пакета Visual Studio
Я создал новый пакет Visual Studio, который при загрузке создает окно инструментов, которое выглядит следующим образом:
Он состоит из нескольких элементов управления с холстами и таких, которые рисуют фигуры в 2 или 3 измерениях. Прямо сейчас они работают на этапе инициализации, чтобы создать объекты, которые вы видите выше. Чтобы этот инструмент был полезен, я хотел бы вызвать метод для этих элементов управления, чтобы передать ему другие объекты для рисования. Например, я отлаживаю некоторый код с точками и линиями и хочу увидеть их графически. (Возможно, используя Immeadiate Window? Или что-то подобное?) Я хотел бы иметь возможность вызывать GeometryVisualToolWindow.DrawObject(myCircle);
Как я могу получить доступ к публичным методам в пакете и передать аргументы?
Я не хочу использовать визуализатор отладчика, потому что хочу иметь возможность выборочно добавлять и удалять объекты со сцены, где визуализатор отладчика будет показывать только один объект. (например, я хочу увидеть, пересекаются ли две линии и т. д.)
Обновить
Я пытался использовать DTE.Debugger.GetExpression
чтобы решить проблему, но после добавления соответствующих ссылок, я получаю это:
1 ответ
Я дам вам представление о том, как выполнить произвольный код в сеансе отладки в Visual Studio.
См. Модель автоматизации: http://i.msdn.microsoft.com/dynimg/IC75297.gif
У вас есть доступ к экземпляру DTE.Debugger, это описано здесь: http://msdn.microsoft.com/en-us/library/aa291845(v=vs.71).aspx (объектная модель отладчика Visual Studio).
Затем вы можете выбрать:
1) Выполнить актуальный оператор в VS отладчике (ExecuteStatement
). Это означает, что вам нужно позаботиться о загрузке всех ваших сборок в определенный сеанс отладчика. Загруженная сборка должна позаботиться о добавлении статической функции, которую может вызвать пользователь. Такие как GeometryVisualToolWindow.DrawObject(myCircle);
, Метод должен общаться с VSPackage.
ИЛИ ЖЕ
2) Используйте GetExpression("myVariable.SerializeToBase64()") из вашего VSPackage, и вуаля, вы сериализовали экземпляр вашего myVariable
, Конечно, сначала нужно ввести такой функционал.
http://msdn.microsoft.com/en-us/library/aa291625(v=vs.71).aspx