c# - 在VisualStudio DTE中,如何获取ActiveDocument的内容?

标签 c# visual-studio envdte

我在 VisualStudio 中编写脚本并试图获取当前 ActiveDocument 的内容。

这是我目前的解决方案:

var visualStudio = new API_VisualStudio_2010();

var vsDTE = visualStudio.VsAddIn.VS_Dte;

var document = (Document)vsDTE.ActiveDocument;
var textDocument = (TextDocument)document.Object("TextDocument");

var editPoint = textDocument.StartPoint.CreateEditPoint();
var text = editPoint.GetText(textDocument.EndPoint.CreateEditPoint());

panel.clear().add_SourceCodeViewer()
     .set_Text(text,  document.FullName.extension());

这是最好的方法吗?

我的解决方案来自:Because ActiveDocument.Text() Would Be Too Easy...

最佳答案

这对我有用

protected DTE2 dte;
dte2 = (EnvDTE80.DTE2)GetService(typeof(EnvDTE.DTE));

public string GetCurrentTextFile(){

  TextDocument doc = (TextDocument)(dte.ActiveDocument.Object("TextDocument"));
  var p = doc.StartPoint.CreateEditPoint();
  string s = p.GetText(doc.EndPoint);

  return s;            
}

关于c# - 在VisualStudio DTE中,如何获取ActiveDocument的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10606274/

相关文章:

c# - 如何使用 RazorGenerator 而不是 T4 来生成 C# 文件?

c# - 通用接口(interface)重载。有效术语?

c++ - 如何通过 C++ 连续写入文本文件并同时通过其他程序(不是 C++)连续读取相同的文本文件?

visual-studio - 我可以像 Visual Studio 一样设置 Intellij IDE 的环境吗?

css - Visual Studio 不呈现@font-face,可能是相对路径问题?

visual-studio-addins - Visual Studio 2010 插件 - 未触发事件

c# - 以编程方式从插件获取当前的 Visual Studio IDE 解决方案目录

c# - 比较泛型 : A "master-type" IEnumerable<> that is generic, 但匹配所有特定类型(IEnumerable<int>、IEnumerable<object>、...)?

c# - Application_AuthenticateRequest 和 FormsAuthentication_OnAuthenticate 有什么区别

c# - 禁用 Windows Phone 上 ListView 中某些项目的倾斜效果