2016-02-03 4 views
1

Я построил VSPackage с окном инструмента и столкнулся с проблемой. Если пользователь открывает окно инструмента, когда VS уже запущен, я попал в класс MyToolPackage и я в состоянии получить DTE с помощьюПолучить DTE в конструкторе окна инструмента

(DTE)GetService(typeof(DTE)); 

Когда пользователь закрывает VS и запускает его снова, окно инструментов уже открыта, и я не удаляйте MyToolPackage, а вместо этого класс MyToolWindow, откуда GetService всегда возвращает null.

Есть ли способ получить объект DTE из класса MyToolWindow или другого класса по моему выбору?

Заранее спасибо.

ответ

1

еще лучше, не пытаться получить какие-либо услуги с вашего ToolWindow CTOR. Окно еще не установлено, поэтому у него нет способа получить и запросить различные службы.

Вы можете попробовать использовать Package.GetGlobalService, но правильным способом было бы разместить требуемый код в переопределении вашего ToolWindowPane.OnToolWindowCreated. Эта функция вызывается после того, как панель инструментов была правильно размещена.

С уважением,