C# 如何获取IClassizer.GetClassificationSpans上的行号?

C# 如何获取IClassizer.GetClassificationSpans上的行号?,c#,visual-studio-extensions,C#,Visual Studio Extensions,我正在用C#开发一个visualstudio扩展,我想根据已经提供的对该文件的分析在文件上添加分类。我得到了每个缺陷的一组位置(文件、行、列)的分析结果 基于MS doc,我已经看到我们应该实现iclassizer.GetClassificationSpans方法。我可以看到我们得到了一组快照跨度。看起来这些跨距大部分是打开文件中的完整行:当前显示的可见行和当前正在编辑的行 然而,正如前面所说的,我已经有了一系列关于其位置的缺陷。我想获得当前的跨度线编号,以便我可以检查我是否在该线上注册了缺陷。

我正在用C#开发一个visualstudio扩展,我想根据已经提供的对该文件的分析在文件上添加分类。我得到了每个缺陷的一组位置(文件、行、列)的分析结果

基于MS doc,我已经看到我们应该实现iclassizer.GetClassificationSpans方法。我可以看到我们得到了一组快照跨度。看起来这些跨距大部分是打开文件中的完整行:当前显示的可见行和当前正在编辑的行

然而,正如前面所说的,我已经有了一系列关于其位置的缺陷。我想获得当前的跨度线编号,以便我可以检查我是否在该线上注册了缺陷。我用调试器浏览了整个SnapshotSpan结构,但没有找到任何查找行号的内容

如何获取当前快照范围行号


当我已经给出了位置的结果,并且我想根据这些位置在编辑器中放置图示符/分类/工具提示/大纲区域等时,框架的逻辑是什么?

我终于发现我可以通过以下方式获得行号:

var lineNumber=span.Snapshot.GetLineNumberFromPosition(span.Start.Position)+1


+1,因为内部值从0开始,而编辑器中的可见行从1开始(或者因为我的文件分析提供了从1开始的行)。

感谢分享您的解决方案!