代码之家  ›  专栏  ›  技术社区  ›  McAden

我的VisualStudio加载项如何在构建之前检测编译器错误,方法与“删除和排序使用”相同?

  •  4
  • McAden  · 技术社区  · 16 年前

    但是,我的问题是,在解决方案中,当我遍历并递归调用每个.cs非设计器文件上的宏时,这个特定的宏会在执行之前检查错误。如果出现语法错误,并且我的外接程序开始调用该功能,它会为每个文件弹出一个对话框。

    我想做的是,使用函数用于动态检查错误的相同方法,然后如果有错误会导致对话框弹出,只需弹出一次性通知并跳过对每个文件的调用。

    我知道我的外接程序可以检查错误列表,但是我发现很多次在“删除和排序”中引发问题的错误并不总是出现在列表中。我让列表为空,然后我尝试“删除并排序”,它告诉我存在构建问题。然后我构建了解决方案,确信它失败了,并且错误被填充。我看到的唯一解决方案是使用与“删除并排序”相同的功能预先检查。

    有人知道我如何在构建之前以与“删除并排序使用”相同的方式检测编译器错误吗?

    2 回复  |  直到 16 年前
        1
  •  1
  •   Hans Passant    16 年前

    我不确定您所说的是哪种错误,我假设它们是IntelliSense解析器生成的错误。是的,那个解析器不是很可靠。它并不意味着要成为一个成熟的C#解析器,而是经过优化以完成一种完全不同的工作:即使代码不完整且无法编译,也提供上下文相关的帮助。除了等待下一个VS版本之外,您无法做任何事情来提高它的可靠性。

    但我突然想到,你可能试图解决错误的问题。关键问题是,外接程序似乎正在使用不应删除的指令删除。真正的修复方法是改进代码分析引擎,使其能够可靠地检测真正的命名空间依赖关系。试图通过希望IntelliSense会抱怨来猜测哪些是重要的,这只会让你的客户感到沮丧。

        2
  •  0
  •   McAden    16 年前

    这似乎有点骇人听闻,但除非有人能想出更好的解决方案,否则我将使用错误列表检查,因为这总比什么都没有好。

    此外,我想我可能会尝试在调用“Edit.RemoveAndSort”时放置一个计时器,如果它占用了一定的时间,则会弹出一个一次性对话框,指出RemoveAndSort似乎有问题,并询问用户是否要取消,或者至少不要调用remove and sort。