7

如何从 Visual Studio 包 (VSIX) 中检测解决方案或项目构建?

4

2 回答 2

4

如果您的程序集中有一个 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...
  }
}

参考:VSIX:获取 DTE 对象参考:http: //msdn.microsoft.com/en-us/library/envdte.solution.aspx

参考:http: //msdn.microsoft.com/en-us/library/envdte._solution.projects.aspx

于 2011-11-10T22:55:00.553 回答
2

看看DTE.Events.BuildEvents有 和 的OnBuildBegin事件OnBuildDone

于 2019-03-29T13:53:31.727 回答