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

2

7

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

Disesteem answered 27/4, 2011 at 13:6 Comment(0)
M
4

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

Matteo answered 10/11, 2011 at 22:55 Comment(3)
Looking at this page on MSDN: msdn.microsoft.com/en-us/library/…; all of the events are labelled "Infrastructure. Microsoft Internal Use Only." Does that mean they shouldn't be used in a VS package?Branchia
I don't think this answers the OP's question (and I have the same question), which is how would one detect a BUILD event? You have shown how to detect a SolutionOpened event.Wolves
how do I access the compiled dlls (projects)? I'm writing an extension that depends on the compiled projects, that is, the extension will read metadata from the assembliesSubir
R
2

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

Ronnaronnholm answered 29/3, 2019 at 13:53 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.