【问题标题】:Extending Intellisense on specific language constructs (namely Attribute constructors)在特定语言构造(即属性构造函数)上扩展 Intellisense
【发布时间】:2013-12-23 12:47:14
【问题描述】:

我为装饰方法编写了一个自定义属性。这些属性有助于将非关键但非常有用的上下文数据添加到方法中。目前,这有助于调试,但最终将有助于静态分析。

因为属性中指定的数据的 Master 位于服务器上并且可查询,所以我想我会编写一个 Visual Studio Intellisense 扩展来帮助我的开发人员。在我的 Attribute 的构造函数中输入参数时,扩展会启动。补全建议本质上是查询结果。

我在 MSDN 上阅读并实现了一个 Statement Completion 示例,并取得了相对成功。

该示例用于纯文本上的完成。我已将其更改为在 Code 上工作。我又近了一步。然而,我遇到的问题是我似乎无法找到如何让它了解它的上下文。每当我输入 any 代码时,Completion 就会启动。我希望它比这更具歧视性。

问题:是否可以让自定义 Visual Studio 语句完成扩展了解它周围的语言结构?

我希望能够仅在我输入属性的构造函数时触发语句完成。并且,如果可能的话,最好只在从给定基类派生的属性上。

这种事情可能吗?

【问题讨论】:

  • 嗯,是的,也不是。内置的 VS C# 代码分析器may be available,但可能不太好用。你当然可以得到语法高亮标记器,至少(通过IClassifierAggregatorServiceIBufferTagAggregatorFactoryService,取决于它是作为IClassifier 还是ITagger 实现的),并尝试对自己排队。
  • 是的,我正在考虑研究语法高亮是如何工作的,看看它是否可以让我访问更精细的解析细节,但这似乎有点骇人听闻。我会看看你发送的第一个链接。它似乎引用了一些 MSDN 示例所引用的相同未记录的 API。应该很有趣:)

标签: c# visual-studio attributes intellisense visual-studio-extensions


【解决方案1】:

没有。这就是我们构建 Roslyn 的原因,但在此之前,您可能能够使用第三方解析器,或者您自己破解的解析器或启发式方法来使其工作。

【讨论】:

  • 我怀疑 Roslyn 是最简单的方法。我等不及它出来了!谢谢!
猜你喜欢
  • 2012-11-29
  • 2012-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-19
相关资源
最近更新 更多