Работа с файлами и документами в расширениях 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);