在不从扩展名打开文件的情况下获取 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 文件(或使用文件爬虫)。
我正在尝试读取 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 文件(或使用文件爬虫)。