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?
Asked Answered
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
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 assemblies –
Subir
Have a look at DTE.Events.BuildEvents
there are events for OnBuildBegin
and OnBuildDone
.
© 2022 - 2024 — McMap. All rights reserved.