DiagnosticAnalyzer 和 CodeFixProvider 如何进入工作区? (罗斯林)
How to get to Workspace in DiagnosticAnalyzer and CodeFixProvider? (Roslyn)
我想检查一下appsettings.json
中是否添加了一个Method(Like Logger)的配置。如果没有,那么我想通过代码修复来添加它。
我正在尝试访问工作区,以便我可以访问其中的文档。但是我找不到获取当前工作区的方法。
我试过AdhocWorkspace
但是里面的项目列表是空的
var solution = new AdhocWorkspace().CurrentSolution;
在 CodeFixProvider
中,您可以从提供给 RegisterCodeFixesAsync
方法的 CodeFixContext
访问工作区:
public override Task RegisterCodeFixesAsync(CodeFixContext context)
{
var workspace = context.Document.Project.Solution.Workspace;
//...
}
对于 DiagnosticAnalyzer
,这是另一回事。分析器使用编译,而不是特定项目或文档。实施诊断分析器时无法到达工作区,因为分析器需要能够 运行 仅使用命令行编译器针对单个编译。
我想检查一下appsettings.json
中是否添加了一个Method(Like Logger)的配置。如果没有,那么我想通过代码修复来添加它。
我正在尝试访问工作区,以便我可以访问其中的文档。但是我找不到获取当前工作区的方法。
我试过AdhocWorkspace
但是里面的项目列表是空的
var solution = new AdhocWorkspace().CurrentSolution;
在 CodeFixProvider
中,您可以从提供给 RegisterCodeFixesAsync
方法的 CodeFixContext
访问工作区:
public override Task RegisterCodeFixesAsync(CodeFixContext context)
{
var workspace = context.Document.Project.Solution.Workspace;
//...
}
对于 DiagnosticAnalyzer
,这是另一回事。分析器使用编译,而不是特定项目或文档。实施诊断分析器时无法到达工作区,因为分析器需要能够 运行 仅使用命令行编译器针对单个编译。