Trabalhando com arquivos e documentos em extensões do Visual Studio
Aqui está uma coleção de pequenos exemplos de código sobre diferentes maneiras de trabalhar com arquivos e documentos.
Obter vista de texto ativo
Obtenha o modo de exibição de texto ativo atual para manipular seu texto de buffer de texto.
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
Associações de ícones de arquivo
Para associar um ícone a uma extensão de arquivo no Gerenciador de Soluções, adicione o [ProvideFileIcon()]
atributo à sua classe de pacote.
[ProvideFileIcon(".abc", "KnownMonikers.Reference")]
public sealed class MyPackage : ToolkitPackage
{
...
}
Veja os milhares de ícones disponíveis na KnownMonikers
coleção usando a janela de ferramentas KnownMonikers Explorer. Encontre-o em Exibir > outras janelas no menu principal.
Abrir arquivo
Use a Microsoft.VisualStudio.Shell.VsShellUtilities
classe auxiliar.
string fileName = "c:\\file.txt";
await VS.Document.OpenAsync(fileName);
Abrir arquivo via projeto
Use esse método quando o arquivo aberto fizer parte da solução.
string fileName = "c:\\file.txt";
await VS.Documents.OpenViaProjectAsync(fileName);
Abrir arquivo na guia Visualizar
A guia Visualização, também conhecida como guia Provisória, é uma guia temporária que se abre bem no lado direito do documento. Abra qualquer arquivo na guia Visualizar da seguinte maneira:
string fileName = "c:\\file.txt";
await VS.Documents.OpenInPreviewTabAsync(fileName);
Obter nome de arquivo de ITextBuffer
Use o método buffer.GetFileName()
de extensão localizado no Microsoft.VisualStudio.Text
namespace.
string fileName = buffer.GetFileName();
SolutionItem do arquivo
Localize o SolutionItem
a partir de um caminho de arquivo absoluto.
string fileName = "c:\\file.txt";
PhysicalFile item = await PhysicalFile.FromFileAsync(fileName);