如何扩展IntelliSense项目?

16

我想手动扩展IntelliSense列表的各种项目。 我想负责由该项目触发的操作(即代码完成和工具提示信息)。 无论是哪些项目都可以。

这是否可能通过VisualStudio插件,ReSharper / DXCore或任何其他插件实现?

背景:

你们中的一些人可能知道FOP(功能导向编程)。 FOP需要对Intellisense和编辑器行为进行各种更改。

编辑:

另一篇有趣的帖子


我猜你想做的事情,扩展方法解决不了吗?http://msdn.microsoft.com/en-us/library/bb383977.aspx 我只是想确认一下... - Ta01
如果你想改变IDE的行为,那么你肯定在考虑插件。如果你想做的事情可以在R#插件框架内完成,那么这比编写自己的VS插件要容易,但后者肯定是可行的。 - AakashM
3个回答

17

通过编写 ReSharper 插件,这是非常容易实现的。

  • 首先,实现ICodeCompletionItemsProvider,它可以提供额外的智能提示项。最简单的方法是继承自ItemsProviderOfSpecificContext<TContext> (如果您想要C#代码提示,则TContext应该是CSharpCodeCompletionContext)。

  • AddLookupItems()实现中,您的提供程序将添加额外的项目。您有机会在此处提供ILookupItem的自定义实现:当用户选择完成弹出窗口中的项时,将调用此接口的Accept()方法。这是您执行所需代码的机会。

请注意,此信息适用于R#6.1 / 7.0。尽管如此,我认为在以前的版本中并没有太大区别。显然,您必须启用 ReSharper IntelliSense 而不是 Visual Studio IntelliSense 才能使其起作用。


2
在VS2010 XML编辑器中添加自定义intelliSense可以通过将自定义xsd文件放置在“C:\ Program Files \ Microsoft Visual Studio 10.0 \ Xml \ Schemas”文件夹中来实现,但我想你可能正在寻找更多内容。
你应该看一下创建和使用IntelliSense代码片段,然后决定是否符合你的需求。这个程序员.stockexchange上的问题也可能会有所帮助。这个问题似乎也很相似,建议使用CSharpIntellisensePresenter(免费)。

@Fraser,这就是为什么它只是一个建议,而不是具体的解决方案。我让他看一下并做出决定。如果你确定这些片段完全没有用处,你可以编辑我的答案并删除那个链接。或者你可以告诉我你确定了,我可以删除链接。谢谢。 - Sajib Mahmood
建议他去看一些完全无关的东西是我给出负一分的原因,这就是为什么要进行负投票,标记那些不正确且缺乏努力的答案。如果你读了你提供的链接,这对你来说应该是显而易见的,不是吗? - Fraser
2
@Fraser,你可以做你认为正确的事情。顺便问一下,我在答案中提供的其他链接怎么样?那些可以吗? - Sajib Mahmood
这里是一份逐步教程,教您如何为您的html添加自定义自动完成功能。http://www.wyndhamhudson.com/adding-custom-intellisense-to-visual-studio-2 - user452425

0

或许ReSharper的Live Templates可以帮助你(ReSharper->Live Templates...)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接