Visual studio 从VisualStudio包(VSIX)如何检测解决方案或项目生成?

Visual studio 从VisualStudio包(VSIX)如何检测解决方案或项目生成?,visual-studio,visual-studio-2010,visual-studio-addins,vsix,Visual Studio,Visual Studio 2010,Visual Studio Addins,Vsix,从visual studio包(VSIX)如何检测解决方案或项目生成?如果程序集中有一个包类,则可以执行以下操作: DTE2 = Package.GetGlobalService(typeof(SDTE)) as DTE2; 然后查看Then IsOpen属性,查看解决方案是否打开。。。查看“项目”属性以查找项目 但是,如果您是指您,那么在打开解决方案时如何获取事件。。。然后是解决方案,例如: public sealed class MyPackage : Package { privat

从visual studio包(VSIX)如何检测解决方案或项目生成?

如果程序集中有一个包类,则可以执行以下操作:

DTE2 = Package.GetGlobalService(typeof(SDTE)) as DTE2;
然后查看Then IsOpen属性,查看解决方案是否打开。。。查看“项目”属性以查找项目

但是,如果您是指您,那么在打开解决方案时如何获取事件。。。然后是解决方案,例如:

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对象ref:


参考:

查看
DTE.Events.BuildEvents
OnBuildBegin
OnBuildDone
的事件查看MSDN上的此页:;所有事件都被标记为“Infrastructure.Microsoft Internal Use Only”。这是否意味着它们不应该在VS包中使用?我认为这并不能回答OP的问题(我也有同样的问题),即如何检测生成事件?您已经演示了如何检测SolutionOpened事件。如何访问已编译的DLL(项目)?我正在编写一个依赖于已编译项目的扩展,也就是说,该扩展将从程序集读取元数据