Как определить решение или сборку проекта из пакета Visual Studio (VSIX)? - PullRequest
6 голосов
/ 27 апреля 2011

Из пакета Visual Studio (VSIX) как определить решение или сборку проекта?

Ответы [ 2 ]

4 голосов
/ 11 ноября 2011

Если у вас есть класс Package в вашей сборке, вы можете сделать:

DTE2 = Package.GetGlobalService(typeof(SDTE)) as DTE2;

Затем посмотрите на свойство IsOpen и посмотрите, открыто ли решение ... посмотрите на свойство Projects, чтобынайти проекты.

Однако, если вы имеете в виду, как получить событие, когда решение открыто ... тогда Решения, например:

public sealed class MyPackage : Package
{
  private DTE m_dte;

  protected override void Initialize()
  {
    IServiceContainer serviceContainer = this as IServiceContainer;
    m_dte = serviceContainer.GetService(typeof(SDTE)) as DTE;
    var m_solutionEvents = m_dte.Events.SolutionEvents;
    m_solutionEvents.Opened += SolutionOpened;
    ...

  }

  void SolutionOpened()
  {
     .... away you go...
  }
}

ref: VSIX: ПолучениеСсылка на объект DTE: http://msdn.microsoft.com/en-us/library/envdte.solution.aspx

ссылка: http://msdn.microsoft.com/en-us/library/envdte._solution.projects.aspx

0 голосов
/ 29 марта 2019

Посмотрите на DTE.Events.BuildEvents есть события для OnBuildBegin и OnBuildDone.

...