4

我正在尝试获取该IVsBuildableProjectCfg对象的实例,但我不知道如何获取它。

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

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

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

谢谢!

4

2 回答 2

5

以下是如何获得我在下面调用IVsBuildableProjectCfg的给定的活动:IVsHierarchyppHierarchy

    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.

我希望这有帮助!

于 2011-07-15T18:43:14.487 回答
-3

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

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

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

希望这可以帮助!

于 2011-07-14T21:52:38.930 回答