在Visual Studio中开发语言支持的重叠替代方案

4
我希望在Visual Studio中为一种特定语言开发支持。MPF语言服务和MEF编辑器扩展似乎有很多重叠,我无法得到清晰的答案,不知道应该使用哪一个。
我只对在Visual Studio 2012及更高版本中开发此语言支持感兴趣。我正在使用C#并希望仅使用托管API。
MSDN文档指出,语法高亮应该由语言服务完成。但是当你去那里的文档时,有一个注释,认为建议使用MEF。但是当您阅读MEF文档时,它并没有真正指定它是设计用于处理全文件语法高亮;措辞让我感觉它旨在用于夹杂的高亮修饰。
然而,相反的是,Ook!示例演示了我认为是全文件语法高亮,尽管使用这样规模的示例,它并没有明确表明它应该以这种方式使用。
MPF语言服务似乎支持向“另存为”对话框添加过滤器。我没有看到任何像这样的东西适用于仅通过MEF支持的语言,但我可能已经错过了。我没有找到任何迹象表明它们都支持向打开对话框添加文件类型过滤器。这使我认为,MEF编辑器扩展的目的不是要实现全面的语言扩展,而是要扩展现有的语言扩展。
请问您有什么想法吗?
编辑:
我希望您能直接回答以下几个问题:
1.用于高亮的MEF编辑器扩展点是否旨在实现全文件语法高亮,还是仅用于夹杂的修饰?
2.如果我已经注册了FileType和ContentType以进行MEF Export,则需要采取哪些其他步骤(或者是否可能?)才能在各种文件对话框中显示相关的文件过滤器?
3.MEF编辑器扩展点是否旨在替换并潜在地最终淘汰MPF语言服务?

如果可能的话,也许你可以在某个地方记录下这次冒险,供其他人参考和使用。 - Daniel A.A. Pelsmaeker
请查看我提出以下问题的方式,以获取可以直接回答的问题示例:https://dev59.com/G2_Xa4cB1Zd3GeqPz1M1 - Sam Harwell
任何微软API似乎都是故意令人痛苦的。我也是一样。 - leppie
1个回答

2

要拥有全面的支持,你不能只使用一种工具。然而,最终你得到的可能是实现MEF接口和实现一些Visual Studio核心COM接口的组合。你完全不需要使用MPF语言服务包。

我认为你的问题比你预期的更广泛,这使得我很难写出完整的答案。

编辑:针对新问题。

  1. 你可以使用一个IClassifier的实现来进行整个文件的语法高亮。我所有更新的基于Visual Studio的IDE都只使用这个。

  2. 你需要导出一个ContentTypeDefinition,但不一定是文件类型。我刚发布了一篇博客文章,描述了我注册文件类型和扩展名所采取的步骤:

    Visual Studio 2012中的文件类型和扩展名

  3. 可能吧?更重要的是,它在某些方面更好,而在其他方面它目前无法做到,因此你需要权衡以获得最佳的生产力。


在您链接到自己的问题的上面评论中,我相信您正在使用MPF来注册一个包。请参阅[http://msdn.microsoft.com/en-us/library/bb166544.aspx]。 - Kelsie
当然可以,但我没有使用Microsoft.VisualStudio.Package.LanguageService程序集。 - Sam Harwell
@Kelsie 我为问题2发布了一篇博客文章。 - Sam Harwell
@SamHarwell 如果将MPF与MEF结合使用会导致任何问题吗? 我想尽可能使用MEF,而MPF类似乎可以显着减少其他功能的工作量。 - Botz3000

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