在不从扩展名打开文件的情况下获取 Visual Studio 中文件的内容

Getting the contents of a file in Visual Studio without opening the file from an extension

我正在尝试读取 Visual Studio 扩展名中的文件内容。以下代码有效,但强制我打开文件,如果它不是(否则它会崩溃):

textDocument = (TextDocument)projectItem.Document.Object("TextDocument");    
EditPoint editPoint = textDocument.StartPoint.CreateEditPoint();
string text =  editPoint.GetText(textDocument.EndPoint);

我可以获得项目的路径,所以我想我可以对项目项的位置做出有根据的猜测。但是,理想情况下,我想在不打开文件的情况下获取文件内容;或者,获取项目项的路径(然后我可以只使用 System.IO 访问文件内容)。

我看过了,但似乎找不到对这两者的任何提及。谁能给我指出正确的方向,好吗?

您可以通过读取其属性从 ProjectItem 获取路径。

var path = YourProjectItem.Properties.Item("FullPath").Value.ToString()

获得 path 后,您可以使用 System.IO 阅读其内容。

string content = File.ReadAllText(path);

如果文件有点大,并且由于大小而导致当前代码出现问题,您应该查看 StreamReader class.

我不确定这是否适用于扩展,但您可能会使用 System.IO,如下所示:

using System.IO;

string filePath = @"C:\Whatever\YourFileName.txt";
string fileText = File.ReadAllText(filePath);

您也可以这样使用 StreamReader

using System.IO;

string filePath = @"C:\Whatever\YourFileName.txt";
using (StreamReader sr = new StreamReader(filePath))
    fileText = sr.ReadToEnd();

编辑:

我想我现在更了解你了。

"get the file contents without opening it" 的唯一方法是扩展程序主动为您提供该数据,但我可以放心地假设它不会。

读取文件时,您应该已经知道文件的位置(如果您不知道,那么要么您不打算访问该文件,要么您看的时间不够长)。

我会尝试手动搜索 SDK 文件(或使用文件爬虫)。