Поделиться через


Работа с файлами и документами в расширениях 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 Обозреватель. Найдите его в разделе "Просмотр > других окон " в главном меню.

Открыть файл

Используйте вспомогательный 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

Используйте метод buffer.GetFileName() расширения, расположенный Microsoft.VisualStudio.Text в пространстве имен.

string fileName = buffer.GetFileName();

SolutionItem из файла

SolutionItem Найдите абсолютный путь к файлу.

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