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