【问题标题】:Access current code pane in Visual Studio Extension访问 Visual Studio 扩展中的当前代码窗格
【发布时间】:2012-02-20 22:43:53
【问题描述】:

我在代码视图中使用右键菜单编写 Visual Studio (2010) 扩展。我希望能够从我的菜单项事件处理程序中检查当前代码,但无法在对象模型中找到执行此操作的某个位置。

如何在 Visual Studio 扩展中访问当前窗口中的代码?

编辑

这是我用来获取当前文档文本的代码

 DTE dte = Package.GetGlobalService(typeof(DTE)) as DTE ;
 TextDocument activeDoc = dte.ActiveDocument.Object() as TextDocument;

 var text = activeDoc.CreateEditPoint(activeDoc.StartPoint).GetText(activeDoc.EndPoint);

【问题讨论】:

  • 您是从 MEF 组件开始的吗?如果是这样,您有 ITextView 还是要获取活动的?
  • @JaredPar 我认为它的 MPF,我不知道如何使用 MEF 连接到 VS,我只是从 VSPackage 模板开始。
  • @JaredPar 在开始使用 MEF 时,是否有一种简单的 2020 年获取活动视图的方法?
  • 更新:似乎可以实现IWpfTextViewConnectionListener 并将其导出为具有IWpfTextView ActiveDocument { get; } 属性的另一个接口。该属性可以在SubjectBuffersConnected 中设置,在SubjectBuffersDisconnected 中取消设置。
  • 我创建了另一个问题并在更新 1 中发布了一个可能的解决方案:How to get active IWpfTextView in VS2019 extension (MEF)

标签: c# visual-studio-2010 vsix vspackage visual-studio-extensions


【解决方案1】:

您可能正在寻找

Document doc = DTE.ActiveDocument;
TextDocument txt = doc.Object() as TextDocument;

然后您应该能够根据需要使用 TextDocument 编辑工作。

【讨论】:

  • 好的,我得到了 TextDocument,但我不知道如何从文档中获取当前代码
  • cmets 中没有太多空间,所以我将向您指出 MSDN 上您应该查看的内容。在 Document 对象上查找 StartPoint,它是一个 TextPoint,它具有访问 CodeElement 的方法。如果您查看CodeElement on MSDN。这个例子可能有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-26
  • 2017-12-17
  • 1970-01-01
  • 1970-01-01
  • 2016-04-10
相关资源
最近更新 更多