我正在尝试获取该IVsBuildableProjectCfg
对象的实例,但我不知道如何获取它。
IVsHierarchy
我目前可以毫无问题地获得 DTE 项目和/或代表每个活动项目的对象。你如何获得IVsBuildableProjectCfg
每个项目的实例?
理想情况下,我想挂钩到每个项目的构建事件以了解每个构建是否成功,以及挂钩到解决方案以查看是否触发了整个构建。
(我也尝试使用DTE2.BuildEvents
,但是当我运行调试器时,我的处理程序永远不会触发。)
谢谢!
我正在尝试获取该IVsBuildableProjectCfg
对象的实例,但我不知道如何获取它。
IVsHierarchy
我目前可以毫无问题地获得 DTE 项目和/或代表每个活动项目的对象。你如何获得IVsBuildableProjectCfg
每个项目的实例?
理想情况下,我想挂钩到每个项目的构建事件以了解每个构建是否成功,以及挂钩到解决方案以查看是否触发了整个构建。
(我也尝试使用DTE2.BuildEvents
,但是当我运行调试器时,我的处理程序永远不会触发。)
谢谢!
以下是如何获得我在下面调用IVsBuildableProjectCfg
的给定的活动:IVsHierarchy
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
.
我希望这有帮助!
您可以通过一些宏编程来做到这一点:
4. 从右侧下拉列表中,选择您感兴趣的事件(例如 OnBuildDone)。5. 添加了一个新的 Sub,在构建完成后放置您想要运行的代码。6. 保存并关闭宏编辑器。7. 构建您的项目。您输入的代码应在构建完成后执行。
希望这可以帮助!