Referência de esquema 2.0 de extensão VSIX
Um arquivo de manifesto de implantação VSIX descreve o conteúdo de um pacote VSIX. O formato de arquivo é regido por um esquema. A versão 2.0 deste esquema permite a adição de atributos e tipos personalizados. O esquema do manifesto é extensível. O carregador de manifesto ignorará os elementos XML e atributos que não entenda.
Importante
Visual Studio 2012carregará VSIXs descritos pelo formato 2010 e 2011.
Esquema do manifesto de pacote
O elemento raiz do arquivo manifesto XML é <PackageManifest>, com um único atributo Version, que é a versão do formato de manifesto. Se as principais alterações são feitas para o formato, o formato da versão será alterado. Este tópico descreve o formato de manifesto versão 2.0, que é especificado no manifesto, definindo a Version o valor da versão do atributo = "2.0".
Elemento de PackageManifest
Dentro do <PackageManifest> elemento raiz, você pode usar os seguintes elementos:
<Metadata>-Metadados e informações de anúncio sobre o pacote em si. Apenas um Metadata é permitido no manifesto do elemento.
<Installation>-Esta seção define a maneira como este pacote de extensão pode ser instalado, incluindo as SKUs do aplicativo que pode ser instalado em. Um único Installation o elemento é permitido no manifesto. Um manifesto deve ter um Installation elemento ou este pacote não instala em qualquer SKU.
<Dependencies>-Uma lista opcional de dependências deste pacote são definidas aqui.
<Assets>-Esta seção contém todos os ativos contidos neste pacote. Nesta seção, este pacote não superfície qualquer conteúdo.
<AnyElement>*-O esquema de manifesto é flexível o suficiente para permitir que qualquer outro elemento. Todos os elementos filho não reconhecidos pelo carregador do manifesto são expostos na API do Extension Manager como objetos de XmlElement extras. Usando esses elementos filho, extensões VSIX podem definir dados adicionais no arquivo de manifesto que pode ser acessados por código em execução no Visual Studio em tempo de execução. Consulte AdditionalElements e LocalizedAdditionalElements.
Elemento de metadados
Esta seção é os metadados sobre o pacote, sua identidade e informações de publicidade. <Metadata>contém os seguintes elementos:
<Identity>-Este define informações de identificação para este pacote e inclui os seguintes atributos:
Id– Este atributo deve ser um ID exclusivo para o pacote escolhido por seu autor. O nome deve ser qualificado da mesma maneira que são de tipos CLR namespaced: Company.Product.Feature.Name. O Id atributo está limitado a 100 caracteres.
Version– Isso define a versão deste pacote e seu conteúdo. Este atributo segue o formato de versionamento de assembly do CLR: Major.Minor.Build.Revision (1.2.40308.00). Um pacote com um número de versão maior é considerado atualizações ao pacote e pode ser instalado sobre a versão instalada existente.
Language– Este atributo é o idioma padrão para o pacote e corresponde aos dados textuais neste manifesto. Este atributo segue a convenção de código de localidade do CLR para módulos de recursos, por exemplo: en-us, en, fr-fr. Você pode especificar neutral para declarar uma extensão de linguagem neutra que será executado em qualquer versão do Visual Studio. O valor padrão é neutral.
Publisher– Este atributo identifica o editor deste pacote, uma empresa ou um nome individual. O Publisher atributo está limitado a 100 caracteres.
<DisplayName>-Este elemento Especifica o nome do pacote fácil de usar que é exibido na interface do usuário do Extension Manager. O DisplayName o conteúdo está limitado a 100 caracteres.
<Description>-Este elemento opcional é uma breve descrição do pacote e seu conteúdo que é exibida na interface do usuário do Extension Manager. O Description conteúdo pode conter qualquer texto que desejar, mas ele tem limitado a 1000 caracteres.
<MoreInfo>-Este elemento opcional é uma URL para uma página on-line que contém uma descrição completa deste pacote. O protocolo deve ser especificado como o http.
<License>-Este elemento opcional é um caminho relativo para um arquivo de licença contido no pacote (. txt,. rtf) ou o URL de um site que contém a licença.
<ReleaseNotes>-Este elemento opcional é um caminho relativo para um arquivo de notas de versão contido no pacote (. txt,. rtf) ou então uma URL para um site que exibe as notas de versão.
<Icon>-Este elemento opcional é um caminho relativo para um arquivo de imagem (png, bmp, jpeg, ico) contido no pacote. A imagem do ícone deve ter 32 x 32 pixels (ou será reduzida para esse tamanho) e aparece na interface do usuário listview. Se nenhum Icon elemento for especificado, a interface do usuário usa um padrão.
<PreviewImage>-Este elemento opcional é um caminho relativo para um arquivo de imagem (png, bmp, jpeg) contido no pacote. A imagem de visualização deve ser 200 x 200 pixels e exibidos nos detalhes da interface do usuário. Se nenhum PreviewImage elemento for especificado, a interface do usuário usa um padrão.
<Tags>-Este elemento opcional lista marcas adicionais de texto separados por ponto-e-vírgula que são usadas para dicas de pesquisa. O Tags elemento está limitado a 100 caracteres.
<GettingStartedGuide>-Este elemento opcional é um caminho relativo para um arquivo HTML ou uma URL para um site que contém informações sobre como usar a extensão ou o conteúdo dentro desse pacote. Este guia é iniciado como parte de uma instalação.
<AnyElement>*-O esquema de manifesto é flexível o suficiente para permitir que qualquer outro elemento. Todos os elementos filho que não são reconhecidos pelo carregador do manifesto são expostos como uma lista de objetos de XmlElement. Usando esses elementos filho, extensões VSIX podem definir dados adicionais no arquivo de manifesto e enumerá-los em tempo de execução.
Elemento de instalação
Esta seção define a maneira que este pacote pode ser instalado e as SKUs de aplicativo que pode ser instalado em. Esta seção contém os seguintes atributos:
Scope– Este atributo pode ter o valor "Global" ou "ProductExtension":
"Global" Especifica que a instalação não tem como escopo para uma SKU específica. Por exemplo, esse valor é usado quando um SDK de extensão está instalado.
"ProductExtension" Especifica que uma extensão VSIX tradicional (versão 1.0) individuais SKUs de Visual Studio o escopo está instalada. Este é o valor padrão.
AllUsers– Este atributo opcional especifica se este pacote será instalado para todos os usuários. Por padrão, esse atributo é false, que especifica que o pacote é por usuário. (Quando você definir esse valor como true, o usuário de instalação deve elevar o nível de privilégio administrativo para instalar o VSIX resultante.
InstalledByMsi– Este atributo opcional especifica se este pacote é instalado por um MSI. Pacotes instalados por um MSI estão instalados e gerenciados pelo MSI (programas e recursos) e não pelo Visual Studio Extension Manager. Por padrão, esse atributo é false, que especifica que o pacote não é instalado por um MSI.
SystemComponent– Este atributo opcional especifica se este pacote deve ser considerado um componente do sistema. Componentes do sistema não aparecem na interface do usuário do Extension Manager e não podem ser atualizados. Por padrão, esse atributo é false, que especifica que o pacote não é um componente do sistema.
AnyAttribute*– O Installation elemento aceita um conjunto ilimitado de atributos que serão expostos no tempo de execução como um dicionário do par de nome-valor.
<InstallationTarget>Elemento –this controla o local em que o instalador VSIX instala o pacote. Se o valor da Scope atributo é "ProductExtension" o pacote deve direcionar uma SKU que tiver instalado um arquivo de manifesto como parte de seu conteúdo para anunciar sua disponibilidade para extensões. O <InstallationTarget> elemento tem os seguintes atributos quando o Scope atributo tem explícita ou valor padrão "ProductExtension":
Id– Este atributo identifica o pacote. O atributo segue a convenção de namespace: Company.Product.Feature.Name. O Id atributo pode conter somente caracteres alfanuméricos e é limitado a 100 caracteres. Valores esperados:
Microsoft.VisualStudio.IntegratedShell
Microsoft.VisualStudio.Pro
Microsoft.VisualStudio.Premium
Microsoft.VisualStudio.Ultimate
Microsoft.VisualStudio.VWDExpress
Microsoft.VisualStudio.VPDExpress
Microsoft.VisualStudio.VSWinExpress
Microsoft.VisualStudio.VSLS
My.Shell.app
Version– Este atributo especifica um intervalo de versão com as versões com suporte mínimas e máxima deste SKU. Um pacote pode detalhar as versões dos SKUs que ele suporta. A notação de intervalo de versão é [10.0 – 11.0], onde:
] – inclusive de versão máxima.
(-versão mínima exclusivo.
) – versão máxima exclusivo.
Única versão # - mínimo suportado versão com max não vinculado.
AnyAttribute*– O <InstallationTarget> elemento permite que um conjunto ilimitado de atributos que vai ser expostos em tempo de execução como um dicionário do par de nome-valor.
Elemento de dependências
Esse elemento contém uma lista de dependências que declara a este pacote. Se quaisquer dependências forem especificadas, esses pacotes (identificadas por seus Id) deve ser instalado antes que isso.
<Dependency>elemento – este elemento filho tem os seguintes atributos:
Id– Este atributo deve ser um ID exclusivo para o pacote dependente. Este valor de identidade deve coincidir com o <Metadata><Identity>Id o atributo de um pacote que este pacote é dependente. O Id atributo segue a convenção de namespace: Company.Product.Feature.Name. O atributo pode conter somente caracteres alfanuméricos e é limitado a 100 caracteres.
Version– Este atributo declara o intervalo de versão especificada do pacote que este pacote é dependente. A notação de intervalo de versão é [1.0 – 2.1):
[-versão mínima inclusiva.
] – inclusive de versão máxima.
(-versão mínima exclusivo.
) – versão máxima inclusiva.
Única versão # - mínimo suportado versão com max não vinculado.
DisplayName-Este atributo é o nome de exibição do pacote dependente que é usado em elementos de interface do usuário, como mensagens de erro e caixas de diálogo. O atributo é opcional, a menos que o pacote dependente é instalado pelo MSI.
Location– Este atributo opcional especifica uma o caminho relativo dentro este VSIX a um pacote VSIX aninhado ou uma URL para o local de download para a dependência. Este atributo é usado para ajudar o usuário localize o pacote de pré-requisito.
AnyAttribute*– O Dependency elemento aceita um conjunto ilimitado de atributos que serão expostos no tempo de execução como um dicionário do par de nome-valor.
Elemento de ativos
Esse elemento contém uma lista de <Asset> marcas para cada elemento de extensão ou conteúdo disponibilizados por este pacote.
<Asset>-Este elemento contém os seguintes atributos e elementos:
Type– Este é o tipo de extensão ou representada por este elemento de conteúdo. Cada <Asset> elemento deve ter um único Type, mas vários <Asset> elementos podem ter o mesmo Type. Este atributo deve ser representado como um nome totalmente qualificado, de acordo com a convenções de namespace. Os tipos conhecidos são:
Microsoft.VisualStudio.Package
Microsoft.VisualStudio.MefComponent
Microsoft.VisualStudio.ToolboxControl
Microsoft.VisualStudio.Samples
Microsoft.VisualStudio.ProjectTemplate
Microsoft.VisualStudio.ItemTemplate
Microsoft.VisualStudio.assembly
Você pode criar seus próprios tipos e dar-lhes nomes exclusivos. Em tempo de execução dentro de Visual Studio, seu código pode enumerar e acessar esses tipos personalizados por meio da API do Extension Manager.
Caminho – o caminho relativo para o arquivo ou pasta dentro do pacote que contém o ativo.
AnyAttribute*– Um conjunto ilimitado de atributos que vai ser expostos em tempo de execução como um dicionário do par de nome-valor.
<AnyElement>*– Qualquer conteúdo estruturado é permitido entre um <Asset> começam e terminam de marca. Todos os elementos são expostos como uma lista de objetos de XmlElement. Extensões VSIX podem definir metadados estruturados de tipo específico no arquivo de manifesto e enumerá-los em tempo de execução.
Manifesto de amostra
<?xml version="1.0" encoding="utf-8"?>
<PackageManifest Version="2.0">
<Metadata>
<Identity Version="2.1.40307.0" Id="Fabrikam.Application.Extension1" Language="us-en" Publisher="Fabrikam" />
<DisplayName>Test Extension Package</DisplayName>
<Description>This is my extension description.</Description>
<MoreInfo>http://www.fabrikam.com/Extension1/</MoreInfo>
<License>eula.rtf</License>
<ReleaseNotes>notes.txt</ReleaseNotes>
<Icon>Images\icon.png</Icon>
<PreviewImage>Images\preview.png</PreviewImage>
<Tags>foo, bar</Tags>
<GettingStartedGuide>http://www.fabrikam.com/guide.htm</GettingStartedGuide>
</Metadata>
<Installation AllUsers="false" SystemComponent="false">
<InstallationTarget Id="Microsoft.VisualStudio.Pro" Version="[10.0-11.0]" />
</Installation>
<Dependencies>
<Dependency Id="another.package" Version="[1.2-2.0)" />
<Dependency Id="Microsoft.Framework.NDP" Version="[4.0-5.0)" />
<Dependency Id="mypackage.package" Version="[1.0-2.0)" DisplayName="MyCoolTool" Location="http://www.fabrikam.com/download/mycooltool.msi" />
</Dependencies>
<Assets>
<Asset Type="Microsoft.VisualStudio.Package" Path="mypackage.pkgdef" />
<Asset Type="Microsoft.VisualStudio.MEFComponent" Path="mycomponent.dll" />
<Asset Type="Microsoft.VisualStudio.ToolboxControl" Path="mycontrol.pkgdef" />
</Assets>
</PackageManifest>