VSIX Manifest Reference

VSIX packages use XML manifests to describe extension metadata, installation requirements, and assets.

Manifest Versions

VersionSchema NamespaceVS Version
VSIX v1http://schemas.microsoft.com/developer/vsx-schema/2010VS 2010-2013
VSIX v3http://schemas.microsoft.com/developer/vsx-schema/2011VS 2015+

Basic Structure

<?xml version="1.0" encoding="utf-8"?>
<PackageManifest Version="2.0.0"
    xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011"
    xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">
  <Metadata>...</Metadata>
  <Installation>...</Installation>
  <Dependencies>...</Dependencies>
  <Prerequisites>...</Prerequisites>
  <Assets>...</Assets>
</PackageManifest>

Metadata Element

<Metadata>
  <Identity Id="MyExtension.GUID"
            Version="1.0.0"
            Language="en-US"
            Publisher="My Company" />
  <DisplayName>My Extension</DisplayName>
  <Description xml:space="preserve">Description of my extension.</Description>
  <MoreInfo>https://example.com</MoreInfo>
  <License>license.txt</License>
  <GettingStartedGuide>https://example.com/docs</GettingStartedGuide>
  <ReleaseNotes>release-notes.txt</ReleaseNotes>
  <Icon>icon.png</Icon>
  <PreviewImage>preview.png</PreviewImage>
  <Tags>tag1, tag2, tag3</Tags>
</Metadata>

Identity Attributes

AttributeRequiredDescription
IdYesUnique extension identifier
VersionYesSemantic version (Major.Minor.Patch)
LanguageNoCulture code (e.g., “en-US”)
PublisherYesPublisher display name

Installation Element

<Installation InstalledByMsi="false" AllUsers="false">
  <InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[17.0,18.0)">
    <ProductArchitecture>amd64</ProductArchitecture>
  </InstallationTarget>
  <InstallationTarget Id="Microsoft.VisualStudio.Pro" Version="[17.0,18.0)" />
  <InstallationTarget Id="Microsoft.VisualStudio.Enterprise" Version="[17.0,18.0)" />
</Installation>

Installation Target IDs

TargetDescription
Microsoft.VisualStudio.CommunityVS Community edition
Microsoft.VisualStudio.ProVS Professional
Microsoft.VisualStudio.EnterpriseVS Enterprise
Microsoft.VisualStudio.IntegratedShellIntegrated shell

Workload Targets

WorkloadDescription
Microsoft.VisualStudio.Workload.ManagedDesktop.NET desktop
Microsoft.VisualStudio.Workload.WebASP.NET and web
Microsoft.VisualStudio.Workload.NetCoreTools.NET Core
Microsoft.VisualStudio.Workload.AzureAzure development
Microsoft.VisualStudio.Workload.NativeDesktopC++ desktop
Microsoft.VisualStudio.Workload.UniversalUWP

Version Range Syntax

SyntaxMeaning
[17.0,)17.0 or higher
[17.0,18.0)17.0 up to (not including) 18.0
[17.0,17.4]17.0 through 17.4 inclusive
17.0Exactly 17.0

Product Architecture

<ProductArchitecture>amd64</ProductArchitecture>

Valid values: x86, amd64, arm64

Dependencies Element

<Dependencies>
  <Dependency Id="Microsoft.Framework.NDP"
              DisplayName=".NET Framework"
              d:Source="Manual"
              Version="[4.8,)" />
</Dependencies>

Prerequisites Element

<Prerequisites>
  <Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor"
                Version="[17.0,)"
                DisplayName="Visual Studio core editor" />
  <Prerequisite Id="Microsoft.VisualStudio.Component.Roslyn.Compiler"
                Version="[17.0,)"
                DisplayName="C# and VB Roslyn compilers" />
</Prerequisites>

Assets Element

<Assets>
  <Asset Type="Microsoft.VisualStudio.VsPackage"
         d:Source="Project"
         d:ProjectName="%CurrentProject%"
         Path="|%CurrentProject%;PkgdefProjectOutputGroup|" />
  <Asset Type="Microsoft.VisualStudio.MefComponent"
         d:Source="Project"
         d:ProjectName="%CurrentProject%"
         Path="|%CurrentProject%|" />
</Assets>

Standard Asset Types

TypeDescription
Microsoft.VisualStudio.VsPackageVS Package assembly
Microsoft.VisualStudio.MefComponentMEF component
Microsoft.VisualStudio.AssemblyReferenced assembly
Microsoft.VisualStudio.ToolboxControlToolbox control
Microsoft.VisualStudio.ProjectTemplateProject template
Microsoft.VisualStudio.ItemTemplateItem template
Microsoft.VisualStudio.AnalyzerRoslyn analyzer
Microsoft.VisualStudio.ContentGeneric content

Complete Example

<?xml version="1.0" encoding="utf-8"?>
<PackageManifest Version="2.0.0"
    xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011"
    xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">

  <Metadata>
    <Identity Id="MyCompany.MyExtension"
              Version="1.2.3"
              Language="en-US"
              Publisher="My Company" />
    <DisplayName>My Awesome Extension</DisplayName>
    <Description xml:space="preserve">A description of what this extension does.</Description>
    <MoreInfo>https://github.com/mycompany/myextension</MoreInfo>
    <License>LICENSE.txt</License>
    <Icon>Resources\icon.png</Icon>
    <PreviewImage>Resources\preview.png</PreviewImage>
    <Tags>productivity, coding, tools</Tags>
  </Metadata>

  <Installation InstalledByMsi="false" AllUsers="false">
    <InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[17.0,)" />
    <InstallationTarget Id="Microsoft.VisualStudio.Pro" Version="[17.0,)" />
    <InstallationTarget Id="Microsoft.VisualStudio.Enterprise" Version="[17.0,)" />
  </Installation>

  <Dependencies>
    <Dependency Id="Microsoft.Framework.NDP"
                DisplayName=".NET Framework"
                d:Source="Manual"
                Version="[4.8,)" />
  </Dependencies>

  <Prerequisites>
    <Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor"
                  Version="[17.0,)"
                  DisplayName="Visual Studio core editor" />
  </Prerequisites>

  <Assets>
    <Asset Type="Microsoft.VisualStudio.VsPackage"
           d:Source="Project"
           d:ProjectName="%CurrentProject%"
           Path="|%CurrentProject%;PkgdefProjectOutputGroup|" />
    <Asset Type="Microsoft.VisualStudio.MefComponent"
           d:Source="Project"
           d:ProjectName="%CurrentProject%"
           Path="|%CurrentProject%|" />
  </Assets>
</PackageManifest>

Language Pack Manifest

For localized extensions:

<?xml version="1.0" encoding="utf-8"?>
<PackageLanguagePackManifest Version="2.0.0"
    xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011">
  <Metadata>
    <DisplayName>Mon Extension</DisplayName>
    <Description>Description en francais</Description>
    <License>license-fr.txt</License>
    <MoreInfo>https://example.com/fr</MoreInfo>
  </Metadata>
</PackageLanguagePackManifest>