C# 如何在Visual Studio中确定当前插入符号位置位于注释块中?

C# 如何在Visual Studio中确定当前插入符号位置位于注释块中?,c#,visual-studio,visual-c++,C#,Visual Studio,Visual C++,是否有方法在Visual Studio代码编辑器(C/C++或C#)中以编程方式确定当前插入符号位置在注释块内(在“//”之后或在“/**/”之间)?我尝试像这样使用IContentType: if ( m_textView.TextBuffer.ContentType.TypeName == "comment" ) 但是,ContentType.BaseTypes似乎只包含与整个文件相关的更一般的内容类型(如“text”、“code”、“C/C++”)。ContentType属性指的是IT

是否有方法在Visual Studio代码编辑器(C/C++或C#)中以编程方式确定当前插入符号位置在注释块内(在“//”之后或在“/**/”之间)?我尝试像这样使用IContentType:

if ( m_textView.TextBuffer.ContentType.TypeName == "comment" ) 

但是,ContentType.BaseTypes似乎只包含与整个文件相关的更一般的内容类型(如“text”、“code”、“C/C++”)。

ContentType属性指的是
ITextBuffer
实例的内容。这通常是C#、文本、代码等。。。它不包含注释或关键字之类的语义信息

不幸的是,目前还没有好的API公开这些信息。注释是一种特定于语言的构造,目前VisualStudio中唯一的通用语言API是代码模型,我认为它不支持注释

在未来,像Roslyn这样的API将提供您需要的信息。至少在Visual Studio 2013之后的版本中,此功能才可用

编辑


有人猜测,
icclassificationtype
是否可以用来获取有关评论的信息。在高水平上,这确实可以使用,尽管这可能是我会避免做的事情。在过去的几次尝试根据需要从分类器获取信息时,我都被咬过。你可能会遇到很多微妙的性能问题

您应该能够使用访问编辑器中用于语法突出显示的分类。如果你不抢先一步,今晚我将发布一个更完整的示例,展示插入符号下文本的
icclassificationtype
提取。

@JaredPar-谢谢你的回答。我认为只要语言服务包正确地突出显示了这些评论,就可以从一些语言服务接口(IVSProviderableItems或其他什么)获得所需的信息。@280Z28-我发现一个接口看起来与这个问题相关,但仍然不知道如何使用它:IStandardClassificationService@280Z28-谢谢。使用该类并调用GetClassificationSpans()和GetClassificationSpans(),当插入符号位于注释块中时,将获得跨度类型“comment”。