我需要在我的应用程序中提供脚本功能,允许客户使用我们的对象模型扩展其功能。我希望提供某种集成的C#/VB.Net编辑器与智能感知,但在研究了像AvalonEdit和ScintillaNet这样的产品后,它们似乎并没有提供真正的代码完成功能,而仅仅是一个应用程序接口,您可以在其中提供您自己的项目列表,以显示在弹出的自动完成列表中。
因此,我想知道Roslyn是否提供了这样的功能?从我遇到的教程和示例来看,Roslyn似乎真的只是一个编译器服务。
作为最后的手段,客户可以使用像VS Express这样的东西,但集成的编辑器显然更好一些。
(我还遇到了Visual Studio Tools for Applications,听起来很有前途;但是在线资源已经有几年的历史了,文档/教程并不存在,所以我在这篇文章中一无所获)。
发布于 2012-10-14 11:45:40
我肯定不是这方面的专家。但既然你还没有收到任何其他回复,我就试试吧。
我认为简短的答案是“是”。
查看AvalonEdit和SharpDevelop中的代码,代码完成似乎是最困难的部分之一。本质上,您必须编写一个编译器(或解析器,无论如何)来确定哪些项应该在完成列表中。看来Roslyn提供了构建完成列表的工具。在旧版本中,这些工具与VS编辑器捆绑在一起,但我在最新版本中看到声明说它们是独立的。如果是这样的话,这些工具在实现代码完成方面将非常有用。
我真的根本没有研究过细节,但我打算这样做,因为我和你有一些相同的目标,而Roslyn看起来会很有帮助(根据我目前所知,这并不是很多)。
发布于 2012-10-14 16:23:49
您提出了一个非常有趣的声明:“在研究了像AvalonEdit、SharpDevelop和ScintillaNet这样的产品之后,它们似乎并没有提供真正的代码完成智能感知”。SharpDevelop是一个完整的集成开发环境,为什么你不能找到“真正的”代码完成智能感知呢?你必须提供一些证据,否则你的陈述是无效的。
你想要实现的目标只能通过两个重要的组件来实现,
正如@Mystere Man指出的那样,Visual Studio Shell可能会为您提供一些帮助。但就我个人而言,我对此知之甚少。
发布于 2012-12-18 09:03:26
我非常努力地尝试使用其中的一个内置组件,但最终还是自己实现了一个。在探索了一天的RichTextBox应用程序接口之后,您可以轻松地构建此支持。只需使用PreviewKeyDown/Up,确保使用undo支持等一批工作。
https://stackoverflow.com/questions/12818041
复制相似问题