Open VSIX Gallery

Add your extension

You can add your extension to this gallery in 2 different ways as part of your build automation.

  1. Use PowerShell
  2. Use AppVeyor

Both PowerShell and AppVeyor uses a custom script that makes it easy to publish the extension to this gallery. It contains other functions that are useful for incrementing the VSIX version and other handy things.

Use PowerShell

First you must execute the VSIX script

(new-object Net.WebClient).DownloadString("") | iex

That allows you to call methods upload the .vsix extension file to the gallery.


That will find all .vsix files in the working directory recursively and upload them. To specify the path, simply pass it in as the first parameter:

Vsix-PublishToGallery .\src\WebCompilerVsix\**\*.vsix

Use AppVeyor

AppVeyor is a build server hosted in the cloud and it's free.

After you've created an account, you can start doing automated builds. A really nice thing is that AppVeyor can automatically kick off a new build when you commit code to either GitHub, VSO or other code repositories.

To automatically upload your extension to when the build has succeeded, all you have to do is to add an appveyor.yml file to the root of your repository. The content of the file should look like this:

version: 1.0.{build}

  - ps: (new-object Net.WebClient).DownloadString("") | iex

  - ps: Vsix-IncrementVsixVersion | Vsix-UpdateBuildVersion

  - msbuild /p:configuration=Release /p:DeployExtension=false /p:ZipPackageCompressionLevel=normal /v:m

  - ps: Vsix-PushArtifacts | Vsix-PublishToGallery

You might want to check out these real-world uses:

Unlisted extensions

An unlisted extension is one that you need to know the direct link to, otherwise it won't show up anywhere. The only places it will show up are:

  • Direct link (example:[ID])
  • Author page
  • Author gallery feed
  • Extension gallery feed

That means it won't show up in the usual places on this website such as:

  • Front page
  • Search results
  • Main gallery feed

To unlist an extension, simply add the tag "unlisted" in the .vsixmanifest file. The tags specified in the .vsixmanifest are not shown on either the Marketplace nor inside Visual Studio, so it won't be visible to anyone.

Here's what it could look like:

<Tags>foo, bar, unlisted</Tags>