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