Anatomia de um pacote VSIX

Um pacote VSIX é um .vsix arquivo que contém uma ou mais extensões do Visual Studio, juntamente com os metadados que o Visual Studio usa para classificar e instalar as extensões. Esses metadados estão contidos no manifesto VSIX e no arquivo [Content_Types].xml . Um pacote VSIX também pode conter um ou mais arquivos Extension.vsixlangpack para fornecer texto de instalação localizado e pode conter pacotes VSIX adicionais para instalar dependências.

O formato do pacote VSIX segue o padrão Open Packaging Conventions (OPC). O pacote contém binários e arquivos de suporte, juntamente com um arquivo [Content_Types].xml e um .vsixarquivo de manifesto. Um pacote VSIX pode conter a saída de vários projetos, ou até mesmo vários pacotes que têm seus próprios manifestos.

Observação

Os nomes dos arquivos incluídos nos pacotes VSIX não devem incluir espaços, nem caracteres reservados no URI (Uniform Resource Identifiers), conforme definido em [RFC2396].

O manifesto VSIX

O manifesto VSIX contém informações sobre a extensão a ser instalada e segue o esquema VSIX. Para obter mais informações, consulte Referência do esquema de extensão VSIX 2.0.

O manifesto VSIX deve ser nomeado extension.vsixmanifest quando é incluído em um .vsix arquivo.

O conteúdo

Um pacote VSIX pode conter modelos, itens de caixa de ferramentas, VSPackages ou qualquer outro tipo de extensão que é suportada pelo Visual Studio.

Pacotes de idiomas

Um pacote VSIX pode conter uma ou mais arquivos Extension.vsixlangpack para fornecer texto localizado durante a instalação. Para obter mais informações, consulte Localizando pacotes VSIX.

Dependências e referências

Um pacote VSIX pode conter outros pacotes VSIX como referências. Cada um desses outros pacotes deve incluir seu próprio manifesto VSIX.

Se um usuário tentar instalar uma extensão que tenha dependências, o instalador verificará se os assemblies necessários estão instalados no sistema do usuário. Se os assemblies necessários não forem encontrados, Extensões e Atualizações exibirá uma lista dos assemblies ausentes.

Se o manifesto de extensão incluir um ou mais elementos de Dependência, Extensões e Atualizações comparará o manifesto de cada referência com as extensões instaladas no sistema e instalará a extensão referenciada se ainda não estiver instalada. Se uma versão anterior de uma extensão referenciada estiver instalada, a versão mais recente a substituirá.

Se um projeto em uma solução multiprojeto incluir uma referência a outro projeto na mesma solução, o pacote VSIX incluirá as dependências desse projeto. Você pode substituir esse comportamento selecionando a referência para o projeto interno e, em seguida, na janela Propriedades , definindo a propriedade Grupos de saída incluídos no VSIX como BuiltProjectOutputGroup.

Para incluir DLLs satélite de assemblies referenciados no pacote VSIX, adicione SatelliteDllsProjectOutputGroup à propriedade Grupos de saída incluídos no VSIX .

Local de instalação

Durante a instalação, Extensões e atualizações procura o conteúdo do pacote VSIX em uma pasta em %LocalAppData%\Microsoft\VisualStudio\{version}\Extensions.

Por padrão, a instalação se aplica somente ao usuário atual, porque %LocalAppData% é um diretório específico do usuário. No entanto, se você definir o AllUsers elemento do manifesto como True, a extensão será instalada em ..\{VisualStudioInstallationFolder}\Common7\IDE\Extensions e estará disponível para todos os usuários do computador.

[Content_Types].xml

O arquivo [Content_Types].xml identifica os tipos de arquivo no arquivo expandido .vsix . O Visual Studio usa esse arquivo durante a instalação do pacote, mas não instala o arquivo em si. Para obter mais informações sobre esse arquivo, consulte A estrutura do arquivo [Content_types].xml.

Um arquivo [Content_Types].xml é exigido pelo padrão Open Packaging Conventions (OPC). Para obter mais informações sobre OPC, consulte OPC: um novo padrão para empacotar seus dados.