Simon
Simon

Reputation: 34840

From a visual studio package (VSIX) how do I detect a solution or project build?

From a visual studio package (VSIX) how do I detect a solution or project build?

Upvotes: 7

Views: 3735

Answers (2)

Daniel Fisher  lennybacon
Daniel Fisher lennybacon

Reputation: 4174

Have a look at DTE.Events.BuildEvents there are events for OnBuildBegin and OnBuildDone.

Upvotes: 2

Stephen Gennard
Stephen Gennard

Reputation: 1910

If you have a Package class in your assembly, you can do:

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

Then look at then IsOpen property, to see if the solution is open... the look at the Projects property to find the projects.

However, if you mean you how do I get an event when a solution is opened... then Solutions, for example:

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: Getting DTE object ref: http://msdn.microsoft.com/en-us/library/envdte.solution.aspx

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

Upvotes: 4

Related Questions