A VSIX package for Visual Studio is
the same kind of ZIP archive as one for VS Code, but with no
package.json. It holds one or more Visual Studio extensions, and may hold
other VSIX packages to install as dependencies, and
Extension.vsixlangpack files with localised setup text. Its manifest,
extension.vsixmanifest, lists the products it installs into and the assets
it holds.
Schema 2.0
This schema was introduced with Visual Studio 2012. The root element is
PackageManifest, with Version="2.0.0", in the namespace
http://schemas.microsoft.com/developer/vsx-schema/2011. The loader
ignores elements and attributes it does not understand.
| Element | Holds |
|---|---|
Metadata | The package’s identity and advertising information. One only. |
Installation | How it installs and what it installs into. One only. Without it the package installs into no product. |
Dependencies | Other packages this one needs. Optional. |
Assets | The extensions and content in the package. Without it the package surfaces nothing. |
Metadata
| Element or attribute | Holds |
|---|---|
Identity Id | A unique ID chosen by the author, at most 100 characters. |
Identity Version | The package’s version, as Major.Minor.Build.Revision. A higher version updates a lower one. |
Identity Language | The default language, such as en-US, or neutral (the default). |
Identity Publisher | The publisher, at most 100 characters. |
DisplayName | The name shown in the extension manager, at most 50 characters. |
Description | A short description, at most 1,000 characters. Optional. |
MoreInfo | The address of a page about the package. Optional. |
License | The path of a licence file (.txt, .rtf) in the package. Optional. |
ReleaseNotes | The path of a release notes file in the package, or an address. Optional. |
Icon | The path of an image (PNG, BMP, JPEG, ICO), 32 × 32 pixels. Optional. |
PreviewImage | The path of an image (PNG, BMP, JPEG), 200 × 200 pixels. Optional. |
Tags | Search hints, separated by semicolons, at most 100 characters. Optional. |
GettingStartedGuide | The path of an HTML file in the package, or an address, opened after installation. Optional. |
ExtensionType | The extensibility model: VSSDK, VisualStudio.Extensibility or VSSDK+VisualStudio.Extensibility. |
Installation
| Attribute or element | Holds |
|---|---|
Experimental | Set when developing an updated version on a computer where it is already installed for all users. |
Scope | Global, or ProductExtension (the default). |
AllUsers | Installs for every user of the computer. Default false. |
InstalledByMsi | The package is managed by an MSI. Default false. |
SystemComponent | Hidden from the extension manager, and cannot be updated. Default false. |
InstallationTarget | A product to install into: Id, such as Microsoft.VisualStudio.Community, .Pro or .Enterprise, and Version, a range such as [17.0,18.0). A child ProductArchitecture element may give amd64 or arm64. |
A version range uses [ and ] for inclusive ends and
( and ) for exclusive ones. A single number means only that
version.
Dependencies
Each Dependency has an Id matching the
Identity Id of another package, a Version range, and
optionally DisplayName and Location, a path to a nested
VSIX in this package or an address to download it from.
Assets
Each Asset has a Type, a Path relative to the
package, and optionally a TargetVersion. The types Microsoft documents
are below, and authors can define their own.
Microsoft.VisualStudio.VsPackageMicrosoft.VisualStudio.MefComponentMicrosoft.VisualStudio.ToolboxControlMicrosoft.VisualStudio.SamplesMicrosoft.VisualStudio.ProjectTemplateMicrosoft.VisualStudio.ItemTemplateMicrosoft.VisualStudio.Assembly
The older schema
Packages from before Visual Studio 2012 use a different root element,
Vsix, with the namespace
http://schemas.microsoft.com/developer/vsx-schema/2010 and a
Version of 1.0.0. An Identifier element holds
the name, author, version, description and locale, a
SupportedProducts element lists the Visual Studio versions and editions
it installs into, and a Content element lists what it holds, such as
MefComponent entries.