【问题标题】:Start Roslyn analyzer by button?按按钮启动 Roslyn 分析仪?
【发布时间】:2016-10-10 13:44:31
【问题描述】:
我有一个 Roslyn 代码分析器,它需要很长时间才能运行,因此在编译开始时运行它或作为一个整体树分析运行它是不合适的。
相反,我希望在用户单击菜单中的按钮(或工具栏/键盘快捷方式)时触发分析。
这可能吗?如果没有,传统的 MEF 扩展是否有办法访问已打开文档的 Roslyn 树并将错误/警告添加到错误列表以及文档中语法节点下的相应曲线?
【问题讨论】:
标签:
c#
visual-studio
roslyn
visual-studio-extensions
roslyn-code-analysis
【解决方案1】:
Roslyn 分析器只能由 Roslyn 触发;你不能那样做。
您可以通过在任何 MEF 组件中注入 VisualStudioWorkspace 从传统的 VS 扩展访问 Roslyn。
Microsoft.CodeAnalysis.EditorFeatures.Text 中有一堆扩展方法可以在 Roslyn 节点/文档和 VS 缓冲区/快照之间进行映射。
您可以使用标准的 VS 错误 API 报告错误;您可能还想查看 Roslyn 中报告 Roslyn 错误的代码。