【问题标题】:Visual Studio Extensibility / MarginsVisual Studio 可扩展性/边距
【发布时间】:2011-02-13 17:32:43
【问题描述】:

我正在尝试将 Margin(通过 MEF)构建为 VS 插件。我需要获取包含方法定义的行。我发现有人在做这样的事情,但似乎大多数人都在解析测试。这似乎是一个非常糟糕的主意,因为它显然只适用于您知道如何解析的语言。

在插件中,我可以使用更高级别的模型以编程方式访问文档:

var fcm = _application.ActiveDocument.ProjectItem.FileCodeModel;
var elem = fcm.CodeElementFromPoint(point, vsCMElement.vsCMElementFunction);

举个例子。

在尝试绘制边距时,是否可以从 MEF 内容中执行此操作?

【问题讨论】:

    标签: visual-studio mef vs-extensibility


    【解决方案1】:

    好的,这样就可以完成了。

    这个的一般过程是: 1) ITextBuffer -> ITextDocument (有一个文件名) 2)使用文件名查找项目项(例如:递归项目项) 3) 从项目item中获取FCM并使用

    【讨论】:

      【解决方案2】:

      如果不自己解析,我不相信现在有任何方法可以做到这一点。

      我认为他们正在为未来版本的 VS 开发的编译器即服务将对此有所帮助。

      【讨论】:

        【解决方案3】:

        他们添加了一些可以提供帮助的 CodeDOM 内容。您将能够导航代码树并搜索文本。这是一个非常基本的介绍:http://msdn.microsoft.com/en-us/library/y2k85ax6%28v=vs.110%29.aspx

        【讨论】: