繁体   English   中英

带有intellisense的内置C#/ VB.Net编辑器--Roslyn,VSTA还是其他什么?

[英]Built-in C#/VB.Net editor with intellisense - Roslyn, VSTA, or something else?

我需要在我的应用程序中提供脚本功能,允许客户使用我们的对象模型扩展其功能。 我希望提供一些带有intellisense的集成C#/ VB.Net编辑器,但在查看AvalonEdit和ScintillaNet等产品后,它们似乎没有提供真正的代码完成,只是一个API,您可以在其中提供自己的列表弹出自动完成列表中显示的项目。

因此我想知道罗斯琳是否提供了这样的功能? 从我遇到的教程和示例中可以看出,Roslyn实际上只是一个编译器服务。

作为最后的手段,客户可以使用像VS Express这样的东西,但集成的编辑器显然更好一些。

(我也遇到了Visual Studio Tools for Applications,听起来很有希望;但是在线资源已有几年历史了,而且文档/教程不存在,所以我用这个来填空。)

我不是这个领域的专家。 但既然你没有收到任何其他回复,我会小心翼翼。

我认为简短的回答是“是”。

查看AvalonEdit和SharpDevelop中的代码,看起来代码完成是最困难的部分之一。 本质上,您必须编写一个编译器(或者解析器,无论如何)来确定完成列表中应该包含哪些项。 Roslyn似乎提供了构建完成列表的工具。 在旧版本中,这些工具与VS编辑器绑定,但我看到声明说它们在最新版本中是独立的。 如果是这样,这些工具在实现代码完成方面非常有用。

我根本没有真正研究过细节,但是我打算这样做,因为我和你有一些相同的目标,而Roslyn看起来会有所帮助(基于我目前所知,这不是很多)。

您提出了一个非常有趣的说法,“在查看AvalonEdit,SharpDevelop和ScintillaNet等产品后,它们似乎无法提供真正的代码完成智能感知”。 SharpDevelop是一个完整的IDE,你为什么不找到“真正的”代码完成Intellisense? 您必须提供一些证据,或该陈述无效。

您想要实现的目标只能通过两个重要的组件来实现,

  • 语言解析器,您可以使用它来获取代码完成的上下文和元素。 这就是Roslyn提供的,但Roslyn还不够成熟,无法解析所有现有的C#语法。 SharpDevelop(以及MonoDevelop)使用NRefactory ,它实现了同样的目标。

  • 支持语法突出显示的UI元素。 这可以通过AvalonEdit或基于您选择的UI框架的ScintillaNet来实现。

正如@Mystere Man所指出的,Visual Studio Shell可能会为您提供一些帮助。 但我个人对此并不了解。

我努力使用其中一个内置组件,但最终自己实现了一个。 在探索了RichTextBox api一天后,您可以轻松地构建此支持。 只需使用PreviewKeyDown / Up,确保使用撤消支持等一批工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM