从visual studio软件包(VSIX)如何检测解决方案或项目构建?
答案 0 :(得分: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...
}
}
ref:VSIX:获取DTE对象参考:http://msdn.microsoft.com/en-us/library/envdte.solution.aspx
参考:http://msdn.microsoft.com/en-us/library/envdte._solution.projects.aspx
答案 1 :(得分:0)
看看DTE.Events.BuildEvents
,有OnBuildBegin
和OnBuildDone
的事件。