c# - 我的 visual studio 插件如何在构建之前以与 "Remove and Sort Usings"相同的方式检测编译器错误?

标签 c# visual-studio-2008 add-in compiler-errors error-detection

我正在制作一个重构工具,可以自动处理一些与 StyleCop 相关的更琐碎的代码样式设置。我希望我的加载项能够执行的一件事(作为开发人员可以打开/关闭的可选功能)是自动调用“Organize Usings -> Remove and Sort”功能。这是一个简单的宏调用。

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

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

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

有谁知道如何在构建之前以与“Remove and Sort Usings”相同的方式检测编译器错误?

最佳答案

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

但令我震惊的是,您可能正在尝试解决错误的问题。关键问题是您的加载项似乎正在删除不应删除的使用指令。真正的解决方法是改进代码分析引擎,以便它能够可靠地检测到真正的 namespace 依赖性。寄希望于 IntelliSense 会提示而试图猜测哪些是重要的只会让您的客户感到沮丧。

关于c# - 我的 visual studio 插件如何在构建之前以与 "Remove and Sort Usings"相同的方式检测编译器错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2301737/

相关文章:

.net - 用于简化命令行参数编辑的 Visual Studio 插件

c# - 如何在 LINQ 的帮助下从字符串中检索字符?

add-in - EA Addin 事件参数内容

c# - 将对象转换为列表<String>

visual-studio-2008 - 不安装Visual Studio的Visual Studio命令提示符

visual-studio - 小型项目的轻量级版本控制(原型(prototype)、演示和一次性)

visual-studio - 是否可以让 Visual Studio 索引源代码以改进字符串搜索?

outlook - 签名/证书 VSTO Outlook 插件

c# - 日期不会去Mysql数据库c#

c# - 什么时候使用哪种设计模式?