[英]How to get IVsBuildableProjectCfg to subscribe to build events?
我正在尝试获取IVsBuildableProjectCfg
object 的实例,但我不知道如何获取它。
我目前可以毫无问题地获得代表每个活动项目的 DTE 项目和/或IVsHierarchy
object。 你如何获得每个项目的IVsBuildableProjectCfg
实例?
理想情况下,我想挂钩到每个项目的构建事件以了解每个构建是否成功,以及挂钩到解决方案以查看是否触发了整个构建。
(我也尝试使用DTE2.BuildEvents
,但是当我运行调试器时我的处理程序永远不会触发。)
谢谢!
以下是如何为给定的IVsHierarchy
IVsBuildableProjectCfg
我在下面将其称为ppHierarchy
:
IVsSolutionBuildManager buildManager = (IVsSolutionBuildManager)GetService(typeof(SVsSolutionBuildManager));
IVsProjectCfg[] ppIVsProjectCfg = new IVsProjectCfg[1];
buildManager.FindActiveProjectCfg(IntPtr.Zero, IntPtr.Zero, ppHierarchy, ppIVsProjectCfg);
IVsBuildableProjectCfg ppIVsBuildableProjectCfg;
ppIVsProjectCfg[0].get_BuildableProjectCfg(out ppIVsBuildableProjectCfg);
然后,您可以使用以下方式订阅构建事件:
uint pdwCookie;
ppIVsBuildableProjectCfg.AdviseBuildStatusCallback(new MyBuildStatusCallback(), out pdwCookie);
其中MyBuildStatusCallback
是您创建的实现 IVsBuildStatusCallback 的IVsBuildStatusCallback
。
我希望这有帮助!
您可以通过一些宏编程来做到这一点:
4. 从右侧下拉列表中,select 您感兴趣的事件(例如 OnBuildDone)。 5. 添加了一个新的 Sub,在构建完成后放置您想要运行的代码。 6. 保存并关闭宏编辑器。 7. 构建您的项目。 您输入的代码应在构建完成后执行。
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.