Visual Studio扩展:如何在错误列表中拦截/修改/删除构建错误消息?

时间:2014-06-19 14:29:56

标签: visual-studio hook visual-studio-extensions visual-studio-addins vsix

我正在开发一个Visual Studio扩展,它将“清理”编译错误消息,使其更易于阅读。

我已经知道如何生成自己的错误。相反,我要做的是修改/替换Visual Studio添加到错误列表窗格的错误消息的文本作为解析编译输出的结果。

到目前为止,我一直没有找到办法做到这一点。以下是我的发现:

  • SVsErrorList中的IVsTaskItems都是只读的,所以我无法直接编辑它们。
  • 由于同样的原因,我也无法删除IVsTaskItems(因此无法用我自己的替换它们)。
  • 我可以将自己的文本附加到“构建输出窗口”窗格,但是我无法修改现有文本,以便在Visual Studio解析之前编辑错误消息。

还有其他方法可以实现这一目标吗?是否在扩展中,是一种方式:

  • 挂钩VS在内部进行的调用,将错误消息添加到错误列表中,并在处理错误列表之前进行更改?
  • 挂钩构建过程的输出并在VS处理之前修改它?
  • 通过其他方式实现这一目标?

1 个答案:

答案 0 :(得分:2)

执行此操作的正确方法是修改编译过程的输出,或修改项目系统和/或.targets文件将信息从编译器报告给IDE的方式。如果您无法控制编译器或项目系统,那么这将是一项难以完成的任务。

  1. 显示的任务实现IVsTaskItem,并且此接口实际上是由客户端代码实现的,因此无法保证任务项能够修改其任何值。

  2. IVsTaskList2接口添加了一个方法RemoveTasks,但它要求您拥有在注册提供程序时返回的提供程序cookie(并且无法获取此提示)。< / p>