Visual studio 2010 VisualStudio2010配色机、intellisense等。从哪里开始!

Visual studio 2010 VisualStudio2010配色机、intellisense等。从哪里开始!,visual-studio-2010,intellisense,syntax-highlighting,mef,Visual Studio 2010,Intellisense,Syntax Highlighting,Mef,好的,在我开始之前,我意识到有很多关于这个主题的文档,但到目前为止,我还没有得到VS2010的基本着色效果 我的目标是简单地打开一个文档,所有内容都是红色的,从这里我可以实现相关的解析逻辑 以下是我尝试/发现的: 1) 下载了所有相关的SDK,发现了ook示例(),没有生成,没有工作 2) 通过“使用托管包框架实现语言服务”,对MEF几乎一无所知 这几乎是这里所有基本内容的复制和粘贴,还更新了一些过时的参考资料,请参见: 现在,我已经到了运行包时MEF似乎已经正确连接的地步(我知道这一点,因为在

好的,在我开始之前,我意识到有很多关于这个主题的文档,但到目前为止,我还没有得到VS2010的基本着色效果

我的目标是简单地打开一个文档,所有内容都是红色的,从这里我可以实现相关的解析逻辑

以下是我尝试/发现的:

1) 下载了所有相关的SDK,发现了ook示例(),没有生成,没有工作

2) 通过“使用托管包框架实现语言服务”,对MEF几乎一无所知

这几乎是这里所有基本内容的复制和粘贴,还更新了一些过时的参考资料,请参见:

现在,我已经到了运行包时MEF似乎已经正确连接的地步(我知道这一点,因为在调试器打开的情况下,我可以看到包初始化和FDoIdle方法正在被命中)

当我打开我在ProvideLanguageExtensionAttribute中注册的扩展名文件时,一切都会消失,就像在一个无休止的循环中一样,但没有出现调试符号(尽管它们已加载)

从ook示例和MEF示例来看,它们似乎是解决同一问题的完全不同的方法。在ook示例中,有分类和完成控制器的概念,在MEF示例中没有提到。而且,他们似乎没有创建包或语言服务,所以我不知道它应该如何工作

对于MEF示例,我的假设是我需要挂接到“IScanner.ScanTokenAndProvideInfoAboutIt”以提供语法高亮显示?如果我能用这种方法就好了

我想我的第一个问题是,我应该采取哪种方法?还是他们两个都有某种联系

我的第二个问题是,在哪里可以找到一个实现bog标准基本语法高亮显示和intellisense或VS2010的基本的完全工作的项目

第三,在MEF示例中,当我创建一个包时,有一堆测试项目是为我创建的。看来集成测试以某种方式启动了VS2010测试平台,但测试失败了。编写带有测试的服务是很好的,但我不知道如何测试每个交互,所以任何对测试语言服务的引用都会很有帮助

最后,请把我认为有用的任何资源/书籍链接扔给我

干杯,克里斯


注:抱歉,我意识到这是部分问题部分咆哮,但我从未如此困惑过

首先,包示例是而不是使用MEF。基本上,您在问题中提到MEF的每个地方实际上都不是MEF,而是托管包框架(MPF),也通俗地称为托管语言服务(MLS)。您可以通过两件事知道扩展是否使用了MEF:vsixmanifest将您的程序集列为包含MEF组件,并且您可以在代码中看到
[Export]
[Import]
属性

最简单的方法是使用MEF。既然已经安装了SDK,那么编辑器分类器项目也有一个模板(在“新建项目”对话框的
C#(或VB)->扩展性->编辑器分类器下)。您当然可以使用语言服务/着色器/包来实现这一点,但代码将比等效的分类器多得多

Ook解决方案是这方面的样本,应该可以工作;如果它无法构建/工作,那么您能否向我发送电子邮件(microsoft的noahric),告诉我您看到了哪些错误,以便我向该示例的所有者发送电子邮件


一般来说,您还应该阅读关于“如何使用MEF为VS2010编写插件”的问题。这有到其他资源的链接,应该会有所帮助。

感谢您的更新,我将向您发送一封电子邮件,告诉您我在使用ook时遇到的问题!解决方案我还注意到,我没有在Extensibility选项卡下提供编辑器分类器项目模板,这让我怀疑我是否错误地安装了SDK,或者在我的机器上运行了早期版本。顺便说一句,Noah,你迫使我阅读MEF及其非常有趣的内容。我真的没有把它理解为一个IoC容器,直到我挖得更深一点。我现在明白了VS如何利用这一点。在这里发布/咆哮之前,也许值得我多读一点:-)。好吧,我终于弄清了为什么我不能构建Ook了!示例-我只安装了beta SDK。此外,我无法使用VS测试shell启动示例,因为指定运行VS的调试属性缺失,但我添加了这些属性,一切正常。谢谢你的帮助。