Udostępnij za pośrednictwem


Praca z plikami i dokumentami w rozszerzeniach programu Visual Studio

Oto kolekcja małych przykładów kodu na różne sposoby pracy z plikami i dokumentami.

Uzyskiwanie aktywnego widoku tekstu

Pobierz bieżący aktywny widok tekstowy, aby manipulować tekstem buforu tekstu.

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

Skojarzenia ikony pliku

Aby skojarzyć ikonę z rozszerzeniem pliku w Eksplorator rozwiązań, dodaj [ProvideFileIcon()] atrybut do klasy pakietu.

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

Zobacz tysiące dostępnych ikon w KnownMonikers kolekcji przy użyciu okna narzędzia ZnaneMonikers Explorer. Znajdź go w obszarze Wyświetl > inne okna w menu głównym.

Otwórz plik

Microsoft.VisualStudio.Shell.VsShellUtilities Użyj klasy pomocnika.

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

Otwieranie pliku za pośrednictwem projektu

Użyj tej metody, gdy otwarty plik jest częścią rozwiązania.

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

Otwórz plik na karcie Podgląd

Karta Podgląd, znana również jako karta Tymczasowe, jest tymczasową kartą, która zostanie otwarta po prawej stronie źródła dokumentu. Otwórz dowolny plik na karcie Wersja zapoznawcza w następujący sposób:

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

Pobieranie nazwy pliku z ITextBuffer

Użyj metody buffer.GetFileName() rozszerzenia znajdującej Microsoft.VisualStudio.Text się w przestrzeni nazw.

string fileName = buffer.GetFileName();

SolutionItem z pliku

Znajdź element SolutionItem z bezwzględnej ścieżki pliku.

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