Автоматический запуск кода расширения в Visual Studio при запуске

можно ли создать расширение для Visual Studio, которое запускается в фоновом режиме, как только пользователь открывает среду IDE Visual Studio? Например, я создаю расширение, которое получает текущий активный адрес файла в Visual Studio (с C#), но я хотел бы, чтобы это расширение всегда работало в фоновом режиме без необходимости активации пользователем, нажав кнопку или нажав какую-либо комбинацию клавиш.

возможно ли это, и если да, то как это лучше делать это?

любая помощь была бы очень признательна! С Уважением, Эрфан

3 ответов


Так как вы пометили свой вопрос с visual-studio-2010 Я предполагаю, что вы работаете над "надстройкой", а не над "расширениями VSPackage".

В этом случае, вы можете использовать OnConnection обработчик событий.

Если вы работаете над расширениями VSPackage, вы можете использовать атрибут ProvideAutoLoad.

просто найдите их, вы найдете достаточную информацию. Оба способа также описаны вкратце здесь в разделе " Как я могу запустить код надстройки в VSPackage?"


для VS 2010 и выше рекомендуемый подход к расширяемости-это пакет (VS 2015 не позволит надстройки).

чтобы загрузить пакет при загрузке Visual Studio, см. раздел HOWTO: автоматическая загрузка пакета Visual Studio.

после загрузки ваш пакет может быть заинтересован в двух различных событиях изменения выбора:

  • чтобы получить уведомление, когда выбор в обозревателе решений изменяется, получить IVsMonitorSelection интерфейс и называем AdviseSelectionEvents / UnadviseSelectionEvents и предоставить класс, который реализует IVsSelectionEvents интерфейс.
  • чтобы получить уведомление при изменении активного окна (которое может быть в окне документа или окно), реализовать IVsWindowFrameNotify интерфейс.

для расширения добавьте следующий атрибут в класс пакета, это загрузит расширение, если решение не открыто в visual studio. Я тестировал это с VS 2015 и 2017.

[ProvideAutoLoad(UIContextGuids80.NoSolution)]