繁体   English   中英

如何让 IVsBuildableProjectCfg 订阅构建事件?

[英]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

我希望这有帮助!

您可以通过一些宏编程来做到这一点:

  1. 点击 Alt-F11(宏编辑器的快捷键,我们都知道键盘快捷键很酷)。
  2. 在 Project Explorer 中,双击 EnvironmentEvents。
  3. 从左侧下拉菜单(其中显示 General),select BuildEvents:

在此处输入图像描述 4. 从右侧下拉列表中,select 您感兴趣的事件(例如 OnBuildDone)。 5. 添加了一个新的 Sub,在构建完成后放置您想要运行的代码。 6. 保存并关闭宏编辑器。 7. 构建您的项目。 您输入的代码应在构建完成后执行。

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM