使用 Visual Studio 扩展中的文件和文档

下面是一系列关于处理文件和文档的不同方法的小代码示例。

获取活动文本视图

获取当前活动文本视图以操作其文本缓冲区文本。

DocumentView docView = await VS.Documents.GetActiveDocumentViewAsync();
if (docView?.TextView == null) return; //not a text window
SnapshotPoint position = docView.TextView.Caret.Position.BufferPosition;
docView.TextBuffer?.Insert(position, "some text"); // Inserts text at the caret

文件图标关联

若要将图标与 解决方案资源管理器 中的文件扩展名相关联,请将该[ProvideFileIcon()]属性添加到包类。

[ProvideFileIcon(".abc", "KnownMonikers.Reference")]
public sealed class MyPackage : ToolkitPackage
{
    ...
}

使用 KnownMonikers 资源管理器工具窗口查看集合中的 KnownMonikers 数千个可用图标。 在主菜单中的“查看>其他 Windows”下找到它。

打开文件

Microsoft.VisualStudio.Shell.VsShellUtilities使用帮助程序类。

string fileName = "c:\\file.txt";
await VS.Document.OpenAsync(fileName);

通过项目打开文件

打开的文件是解决方案的一部分时,请使用此方法。

string fileName = "c:\\file.txt";
await VS.Documents.OpenViaProjectAsync(fileName);

在“预览”选项卡中打开文件

“预览”选项卡(也称为“临时”选项卡)是在文档右侧打开的临时选项卡。 在“预览”选项卡中打开任何文件,如下所示:

string fileName = "c:\\file.txt";
await VS.Documents.OpenInPreviewTabAsync(fileName);

从 ITextBuffer 获取文件名

使用位于命名空间中的Microsoft.VisualStudio.Text扩展方法buffer.GetFileName()

string fileName = buffer.GetFileName();

来自文件的 SolutionItem

SolutionItem从绝对文件路径中查找。

string fileName = "c:\\file.txt";
PhysicalFile item = await PhysicalFile.FromFileAsync(fileName);