如何让IVsBuildableProjectCfg订阅构建事件?

jun*_*ace 4 vsx events build visual-studio-2010 vspackage

我试图得到一个IVsBuildableProjectCfg对象的实例,但我不知道如何得到它.

我目前可以IVsHierarchy毫无问题地获得DTE项目和/或代表每个活动项目的对象.你如何获得IVsBuildableProjectCfg每个项目的实例?

理想情况下,我想挂钩每个项目的构建事件,以了解每个构建是否成功,以及挂钩到解决方案以查看整个构建是否被触发.

(我也尝试过使用DTE2.BuildEvents,但是当我运行调试器时,我的处理程序永远不会触发.)

谢谢!

Mat*_*att 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);
Run Code Online (Sandbox Code Playgroud)

然后您可以使用以下命令订阅构建事件:

    uint pdwCookie;
    ppIVsBuildableProjectCfg.AdviseBuildStatusCallback(new MyBuildStatusCallback(), out pdwCookie);
Run Code Online (Sandbox Code Playgroud)

MyBuildStatusCallback您创建的实现对象在哪里IVsBuildStatusCallback.

我希望这有帮助!