【问题标题】:How to add code snippets to VSIX MEF editor extension without language service如何在没有语言服务的情况下将代码片段添加到 VSIX MEF 编辑器扩展
【发布时间】:2014-12-03 18:46:55
【问题描述】:

我正在尝试使用带有 VS2012 的 MEF 编辑器扩展来实现代码 sn-ps,我按照链接中的演练“实现代码片段”进行操作:http://msdn.microsoft.com/en-us/library/ff926100(v=vs.110).aspx

该实施基于演练显示语句完成。这个功能很好用。

“实现代码片段”的第一部分是“创建和注册代码片段”,它不起作用。本节的最后是第 8 步:

构建并运行项目。在项目运行时启动的Visual Studio实验实例中,你刚刚注册的sn-p应该会显示在TestSnippets语言下的Code Snippets Manager中。

没有错误,但代码片段管理器不显示 TestSnippets 语言,因此 sn-ps 不存在。我已经被这个问题困扰了几个星期,找不到资源来理解这个问题。

任何有关如何解决此问题的想法将不胜感激。

谢谢

【问题讨论】:

    标签: c# visual-studio-2012 mef visual-studio-extensions vsix


    【解决方案1】:

    我意识到这并不容易,但我已经用 VSIX 搞砸了很长一段时间了。如果要修复此类问题,则需要进行硬核调试,使用反射器或dotPeek。

    通过调试,我的意思是,您需要逐行调试所有 MEF 管道的实际实现的代码,以及使用 MEF 的内容。

    基本上,只要找出“代码片段管理器”在哪里工作,然后看看为什么你的语言没有被拉进来。

    基本上,你需要问一个问题:

    1) 为什么代码片段管理器不显示 TestSnippets 语言?

    然后,你只需要通过调试来回答它,找到代码片段管理器在哪里做出显示语言的决定,看看为什么它没有出现在那里。

    我用这种方法解决了很多问题,我很感激大部分代码都是 C#,这意味着可以很容易地单步执行代码并查看执行的位置。

    【讨论】:

    • 代码片段管理器是 Visual Studio 代码的一部分,如何调试 VS 代码?
    • @MiguelV;只需下载反射器(谷歌它),它允许您进入任何代码。只需在您的代码中设置断点,一旦 VisualStudio 调用它,您就可以通过调用堆栈向后导航并将断点设置到 VS 代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 2014-11-11
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多