gpt4 book ai didi

c# - Roslyn:带有代码修复项目的诊断中的当前工作区

转载 作者:太空狗 更新时间:2023-10-30 00:31:44 27 4
gpt4 key购买 nike

如何在带有代码修复项目的诊断中获取有关当前工作区的信息(例如项目路径、解决方案路径)?

我正在实现 ISyntaxNodeAnalyzer 类型的诊断

我需要访问 SymbolFinder.FindImplementationsAsync,但为此,我需要解决方案实例

编辑:我有这样的代码:

var syntax = (LocalDeclarationStatementSyntax) node;
var type = syntax.Declaration.Type;
var typeSymbol = semanticModel.GetTypeInfo(type).ConvertedType;

我想找出 typeSymbol 的所有用法/引用。 TypeSymbol 表示位于源代码中的类。

为此,我想使用 SymbolFinder,但 SymbolFinder 的方法需要 Solution 的实例...在旧版本的 Roslyn 中,文档作为诊断的方法参数给出,您可以获取项目和解决方案。

最佳答案

在实现诊断分析器时,目前没有进入工作区或进行多项目分析的方法,因为这些需要能够仅使用命令行编译器针对单个编译运行。但是,您可以在确定诊断后在代码修复提供程序中执行此工作。

如果您只想找到曾经类实现另一个类的所有地方,您可以制作一个编译范围的诊断分析器并在决定诊断之前检查所有声明。您可以通过同时实现 ICompilationStartedAnalyzer 和 ICompilationEndedAnalyzer 来做到这一点。

关于c# - Roslyn:带有代码修复项目的诊断中的当前工作区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23203206/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com