我想在Visual Studio中为特定语言开发支持. MPF语言服务和MEF编辑器扩展似乎有很多重叠,我无法得到一个明确的答案,我应该使用哪一个.
我只对在Visual Studio 2012及更高版本中开发此语言支持感兴趣.我在C#工作,希望只使用托管API.
MSDN文档指出语法突出显示应该使用语言服务完成.但是当你去那里的文档时,有一个说明可以说是建议使用MEF.但是,当您阅读MEF文档时,它并没有真正指定它旨在处理全文件语法突出显示;这句话让我觉得它是用于穿插高光装饰品.
然而,与此相反,Ook!示例演示了我认为是完整文件语法突出显示的内容,尽管有一个该范围的样本,但它是否真的建议应该以这种方式使用它并不十分清楚.
MPF语言服务似乎支持在“另存为”对话框中添加过滤器.对于仅通过MEF支持的语言,我没有看到这样的事情,但我可能错过了它.我没有发现任何迹象表明其中任何一个都支持在“打开”对话框中添加文件类型过滤器.这告诉我,MEF编辑器扩展并不是为了实现全面的语言扩展,而是为了扩展现有的扩展.
请问有什么想法吗?
编辑:
我希望你能直接回答的一些问题:
> MEF编辑器扩展点是否用于突出显示用于完整文件语法突出显示的实现,还是仅用于穿插装饰?
>如果我为MEF导出注册了FileType和ContentType,那么需要执行哪些其他步骤(或者甚至可能?)以使相关文件过滤器显示在各种文件对话框中?
> MEF编辑器扩展点是否旨在取代并可能最终弃用MPF语言服务?
最佳答案 对于功能齐全的支持,您将无法仅使用一件事.但是,最终结果可能是实现MEF接口和实现Visual Studio的一些核心COM接口的组合.您根本不需要使用MPF语言服务包.
我认为你的问题比你想要的更广泛,这使我很难写出完整的答案.
编辑:对于新问题.
>您可以使用IClassifier的实现来进行完整文件语法突出显示.我所有较新的基于Visual Studio的IDE都使用它.
>您需要导出ContentTypeDefinition,但不一定是文件类型.我刚刚发布了一篇博客文章,描述了我为注册文件类型和扩展所采取的步骤:
File types and extensions in Visual Studio 2012
>也许吧?更重要的是,有些东西比其他东西更好,而现在根本无法做到,所以你选择了一个平衡点,以获得最佳的整体生产力.