为 Visual Studio 实用地清除错误列表 window

Clear Error List window Pragmatically for Visual Studio

我正在编写我的自定义解析器,在验证后我正在使用 "error task" 和 "error service Provider" 将信息添加到 Visual studio 的错误列表中。它将我的自定义错误添加到错误列表 window。但是当我再次重新编译时,它会将错误添加到 window。如果之前是 2,现在是 3,它会累积显示。在我添加另一个之前,有什么方法可以从错误列表 window 中清除这些错误项。

 _errorListProvider.Tasks.Add(new ErrorTask
            {
                Category = TaskCategory.User,
                ErrorCategory = category,
                HelpKeyword = "Automation Id Help text",
                Line = 12,
                Column = 12,
                Text = message
            });

我将不胜感激。

_errorListProvider.Tasks.Clear()

但是如果你每次想添加错误时都在装箱提供者,它就不会起作用。所以,你需要把它作为变量放在某个地方,你可以在需要的时候访问它。

如果您还想在发生错误的项目关闭或解决方案关闭时自动删除错误,您可以这样做:

public void RemoveErrors(IVsHierarchy aHierarchy)
{
  SuspendRefresh();

  for (int i = errorListProvider.Tasks.Count - 1; i >= 0; --i)
  {
    var errorTask = errorListProvider.Tasks[i] as ErrorTask;
    aHierarchy.GetCanonicalName(Microsoft.VisualStudio.VSConstants.VSITEMID_ROOT, out string nameInHierarchy);
    errorTask.HierarchyItem.GetCanonicalName(Microsoft.VisualStudio.VSConstants.VSITEMID_ROOT, out string nameErrorTaskHierarchy);
    if (nameInHierarchy == nameErrorTaskHierarchy)
    {
      errorTask.Navigate -= ErrorTaskNavigate;
      errorListProvider.Tasks.Remove(errorTask);
    }
  }

  ResumeRefresh();
}

如果您要从错误列表中删除更多错误或要在错误列表中添加更多错误,您可以使用 SuspendRefresh()ResumeRefresh() 加快进程的方法。您的操作会比以前更快,因为通常在每次删除或添加操作后都会刷新错误列表。