Roslyn 分析器 - 访问 ITextBuffer
Roslyn Analyzer - Access to ITextBuffer
是否有可能以某种方式访问 Visual Studio 中 Roslyn 诊断分析器正在分析的文档的 ITextBuffer 实例。或者至少是文件名,以便我可以自己检索 ITextBuffer?
有关如何为 c# 编写自定义代码分析器的详细信息,请参阅:https://docs.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/tutorials/how-to-write-csharp-analyzer-code-fix
一般来说,围绕分析器创建的基础设施允许它们 运行 在 Visual Studio 之外(例如,从命令行或作为 CI 构建系统的一部分)。这就是为什么没有很多简单的方法可以在 Roslyn 和 Visual Studio 之间进行互操作。然而,有一些不同的 extension methods 可以帮助您弥合 Visual Studio 和 Roslyn 之间的差距。
我相信你需要:
- 添加带有
Install-Package Microsoft.CodeAnalysis.EditorFeatures.Text
的 NugetPackage
- 将 using
using Microsoft.CodeAnalysis.Text;
添加到您的分析器
如果您有权访问 Document
,则可以使用 .TryGetText(out SourceText)
检索文档的 SourceText
。
然后你可以使用扩展方法FindCorrespondingEditorTextSnapshot
得到一个ITextSnapshot
.
我在这里的知识有点不稳定,但我不确定你是否可以获得 ITextBuffer
,因为当没有为给定文件打开编辑器时,你的分析器通常会 运行ning 所以没有为它创建 ITextBuffer
。
SyntaxTree 有一个 属性 FilePath,Document 也有,如果不是空字符串,它将是文件的路径。
不知道如何从那里转到缓冲区。但也不清楚为什么你会想要缓冲区...
是否有可能以某种方式访问 Visual Studio 中 Roslyn 诊断分析器正在分析的文档的 ITextBuffer 实例。或者至少是文件名,以便我可以自己检索 ITextBuffer?
有关如何为 c# 编写自定义代码分析器的详细信息,请参阅:https://docs.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/tutorials/how-to-write-csharp-analyzer-code-fix
一般来说,围绕分析器创建的基础设施允许它们 运行 在 Visual Studio 之外(例如,从命令行或作为 CI 构建系统的一部分)。这就是为什么没有很多简单的方法可以在 Roslyn 和 Visual Studio 之间进行互操作。然而,有一些不同的 extension methods 可以帮助您弥合 Visual Studio 和 Roslyn 之间的差距。
我相信你需要:
- 添加带有
Install-Package Microsoft.CodeAnalysis.EditorFeatures.Text
的 NugetPackage
- 将 using
using Microsoft.CodeAnalysis.Text;
添加到您的分析器
如果您有权访问 Document
,则可以使用 .TryGetText(out SourceText)
检索文档的 SourceText
。
然后你可以使用扩展方法FindCorrespondingEditorTextSnapshot
得到一个ITextSnapshot
.
我在这里的知识有点不稳定,但我不确定你是否可以获得 ITextBuffer
,因为当没有为给定文件打开编辑器时,你的分析器通常会 运行ning 所以没有为它创建 ITextBuffer
。
SyntaxTree 有一个 属性 FilePath,Document 也有,如果不是空字符串,它将是文件的路径。
不知道如何从那里转到缓冲区。但也不清楚为什么你会想要缓冲区...