使用托管包框架实现语言服务

时间:2011-03-06 14:22:01

标签: c# mef languageservice walkthrough mpf

我已按照漫游(http://msdn.microsoft.com/en-us/library/bb166360.aspx)中列出的步骤来实施和注册LanguageService,但我无法让它工作。

我的包正确加载,我可以添加功能菜单项和选项页,但我无法打开注册到我的服务的文件。当我附加一个调试器时,我可以看到我的VSPackage被构造,加载,并且它的FDoIdle方法被调用了两次。在那之后,实验性的Visual Studio会话进入杂草并且似乎陷入无限循环。如果我尝试将.txt文件保存为我的文件类型,则文件会正确保存,但不会在Visual Studio中加载,我会收到Object null异常。

我可以在这个问题中看到我提到的问题:Visual studio 2010 colourizers, intellisense and the rest. Where to start!

解决方案似乎是不使用Managed Package Framework而是使用Manage Extensibility Framework。这很好,但是我真的很想知道我的MPF语言服务实现有什么问题。

有没有人使用MPF成功创建了LanguageService?任何人都可以指导我做一个有效的例子或演练吗?

问题解决了!:

我做了一些进一步的调试,发现实验性的Visual Studio实例一直在反复调用以下内容:

Microsoft.VisualStudio.Editor.Implementation.VsFontsAndColorsInformation.TryGetIndexForNativeItem(String name,IVsColorTable colorTable,Int32& colorTableIndex)

在预感中,我在ProvideLanguageServiceAttribute中将RequestStockColors参数指定为true,现在我可以打开我的文件类型。我的简单扫描仪甚至还有工作语法着色!

1 个答案:

答案 0 :(得分:6)

问题解决了!:

我做了一些进一步的调试,发现实验性的Visual Studio实例一直在反复调用以下内容:

Microsoft.VisualStudio.Editor.Implementation.VsFontsAndColorsInformation.TryGetIndexForNativeItem(String name,IVsColorTable colorTable,Int32& colorTableIndex)

在预感中,我在ProvideLanguageServiceAttribute中将RequestStockColors参数指定为true,现在我可以打开我的文件类型。我的简单扫描仪甚至还有工作语法着色!