Вызов функции пакета 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

Другие вопросы по тегам