【问题标题】:Custom Intellisense Extension自定义智能感知扩展
【发布时间】:2023-04-01 13:35:01
【问题描述】:

我想在 Visual Studio 中编写一个对智能感知的补充。

是否可以扩展,根据我的研究,我没有找到任何有关智能感知扩展的示例或文档。

如何让智能感知显示如下简单的 HelloWorld 消息(其中 hello world 在运行时添加到字符串的智能感知):

【问题讨论】:

  • @oded ive 刚刚花了几个小时浏览 google、msdn 等,但在扩展智能感知方面根本找不到任何东西,你有什么建议可以在哪里寻找吗?跨度>
  • 对不起,卢克,我不认为Visual Studio Extensibility forum 会是一个好的起点。但你可以改写问题,不要求链接,实际上是一个主题编程问题。
  • 另外,您想添加到 Intellisense 的示例也会有很大帮助。可能需要许多不同的技术...
  • @JasonMalinowski 我已经添加了更多关于我所追求的细节,这是你所追求的信息吗?我在表达这个问题时遇到了一些麻烦,因为我不知道从代码 pov 哪里开始,所以任何更好地措辞的提示将不胜感激

标签: visual-studio intellisense visual-studio-extensions


【解决方案1】:

因此,在 Visual Studio 2010 及更高版本中,您想要使用的可扩展性 API 位于 Microsoft.VisualStudio.Languages.IntelliSense 命名空间下。在较高级别上,您希望 MEF 导出一个 ICompletionSourceProvider,它将提供您需要的项目。有两篇很好的博文 herehere 演示了基本技术。

如果您想让您的屏幕截图成为现实,您会遇到两个问题。 (这就是我要求这个场景的原因,因为我在这里的建议会改变。)首先,这种方法在法律上不允许您附加到现有的完成集,而是提供一个新的完成集。在 UI 中,这显示为两个选项卡,就像 Visual Basic 编辑器中的 Common/All 选项卡一样。这是当前 API 的限制。您可以尝试修改 AugmentCompletionSource 中现有的完成集之一,但我不知道这是否可行。无论如何,它绝对不受支持。

其次,很难知道何时何地推荐东西。在您的示例中,您说“string 的 IntelliSense”。可悲的是,VS 中没有任何 API(当前)可以让您知道点之前的内容是什么。您可以做一些简单的启发式或尝试为您的场景实现一些足够好™的解析器,但您现在必须接受您不会得到完美的结果。

Roslyn 项目旨在解决第二个问题,因此您可能会发现进一步探索很有用。由于我们预计会有很多人想要扩展完成功能,因此我们也在考虑提供其他可扩展性 API,这样您就不必从头开始滚动 ICompletionSourceProvider,但此类 API 不在当前的 CTP 中。

[免责声明:我是从事 IntelliSense 工作的 Roslyn 团队的成员。]

【讨论】:

  • 谢谢,我很确定这就是我所追求的,真的很遗憾你在 . 之前无法访问东西,API 必须在某个地方才能让常规的 VS intellisense 工作,所以很遗憾它不是民众。我以前用过 roslyn 的东西,所以我会用它来破解一些东西来弄清楚主题是什么
  • @Jason,我尝试为 javascript [Order(Before = "High")] [Export(typeof(ICompletionSourceProvider)), ContentType("JavaScript"), Name("EnhancedJavaScriptCompletion")] internal sealed class JavaScriptCompletionSourceProvider : ICompletionSourceProvider { } 添加另一个智能感知,但它从不进入调试器,尽管断点看起来像是加载了代码。你能帮帮我吗?
  • @DotNetWise:您应该创建一个新问题,以便其他人可以回答该问题。 ;-)
  • @JasonMalinowski 我在这里发布了问题stackoverflow.com/questions/15657525/…
  • Roslyn 链接指向您在上面链接的博客之一。我猜你想链接到msdn.microsoft.com/en-us/vstudio/roslyn.aspx
猜你喜欢
  • 1970-01-01
  • 2011-12-31
  • 2012-10-02
  • 1970-01-01
  • 1970-01-01
  • 2017-01-26
  • 2014-11-25
  • 2018-04-30
  • 1970-01-01
相关资源
最近更新 更多