visual-studio-2010 - Visual Studio 2010 着色器、智能感知等。从哪儿开始!

标签 visual-studio-2010 intellisense syntax-highlighting mef

好的,在我开始之前,我意识到有很多关于这个主题的文档,但到目前为止我什至无法为 VS2010 进行基本的着色。

我的目标是简单地达到可以打开文档并且所有内容都为红色的程度,从这里我可以实现相关的解析逻辑。

这是我尝试/发现的:

1) 下载了所有相关的 SDK 等 - 找到了 ook 示例 ( http://code.msdn.microsoft.com/ookLanguage ) - 没有构建,没有工作。

2) 对 MEF 几乎一无所知,请阅读“使用托管包框架实现语言服务”- http://msdn.microsoft.com/en-us/library/bb166533(v=VS.100).aspx

这几乎是对这里所有基本内容的复制和粘贴,还更新了一些过时的引用资料,请参见:http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/a310fe67-afd2-4592-b295-3fc86fec7996

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

当我打开一个扩展的文件时,我已经用 ProvideLanguageExtensionAttribute 注册了所有内容,就像在无限循环中一样,但没有调试符号命中(尽管它们已加载)。

查看 ook 示例和 MEF 示例,它们似乎是解决同一问题的完全不同的方法。在 ook 示例中,有 MEF 示例中未提及的分类和完成 Controller 的概念。此外,他们似乎没有创建包或语言服务,所以我不知道它应该如何工作?

对于 MEF 示例,我的假设是我需要 Hook 到“IScanner.ScanTokenAndProvideInfoAboutIt”以提供语法突出显示?如果我能用这个方法就好了。

所以我想我的第一个问题是我应该在这里采取哪种方法?或者他们都以某种方式联系在一起?

我的第二个问题是,我在哪里可以找到实现沼泽标准基本语法突出显示和智能感知或 VS2010 的基本完整工作项目?

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

最后,请以我认为有用的方式抛出任何资源/书籍链接。

干杯,克里斯。

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

最佳答案

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

最简单的方法是使用 MEF。由于您安装了 SDK,您还有一个编辑器分类器项目的模板(在“新建项目”对话框中的 C# (or VB)->Extensibility->Editor classifier 下)。你当然可以使用语言服务/着色器/包来做到这一点,但代码会比等效的分类器多得多。

Ook 解决方案就是这个例子,应该可以工作;如果它不能构建/工作,那么您能否向我发送电子邮件(微软的 noahric),其中包含您看到的错误,以便我可以向该示例的所有者发送电子邮件?

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

关于visual-studio-2010 - Visual Studio 2010 着色器、智能感知等。从哪儿开始!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2944932/

相关文章:

c# - 如何让 Visual Studio Intellisense 推荐方法的异步变体

Emacs AucTex Latex 语法防止等宽字体

php - notepad++ 中多行 php echo 语句的语法高亮显示

c# - g.i.cs 类不断将其基类更改回默认值

visual-studio - 测试 Visual Studio 扩展

visual-studio-2010 - Wix (VS 安装程序) - 缺少编辑器工具栏

visual-studio-2010 - CUDA __syncthreads() 编译正常,但带有红色下划线

typescript - 如何告诉 TypeScript 我的函数参数是 Enum 键?

c# - vscode omnisharp 智能感知不适用于 dotnet 5.0(目标 net5.0)

emacs - 如何在 Emacs 的 lisp-mode 中高亮显示所有函数的名称?