A command-line tool that generates a private extension gallery for Visual Studio from a folder of .vsix files.
The Visual Studio Marketplace is great for public extensions, but sometimes you need to distribute extensions that should not be publicly listed. Common scenarios include:
- Internal tooling. Your team builds VS extensions for internal use (code generators, project templates, custom analyzers) and needs a central place to install and update them.
- Pre-release testing. You want to distribute beta builds of an extension to a test group before publishing to the Marketplace.
- Offline or restricted environments. Your development machines cannot reach the public Marketplace, but can access a shared network folder or internal web server.
Visual Studio has built-in support for private extension galleries, but you need to provide a valid ATOM feed that describes the available extensions. This tool generates that feed automatically by reading the metadata from your .vsix files.
Create a folder and place the .vsix files you want to distribute inside it. Then add PrivateGalleryCreator.exe to the same folder.
Double-click PrivateGalleryCreator.exe (or run it from the command line). It will:
- Parse each
.vsixfile for metadata (name, version, author, description, etc.) - Extract extension icons into a hidden
iconsfolder - Generate a
feed.xmlfile in the same directory
Note: The
iconsfolder is hidden. If you don't see it, that's expected. The feed will still work correctly.
Open Visual Studio and go to Tools > Options > Environment > Extensions. Add a new gallery with the absolute path to the feed.xml file. This can be a local path or a network share.
\\mycompany\extensions\feed.xml
The private gallery will now appear under the Online tab in the Extensions dialog (Extensions > Manage Extensions).
Run PrivateGalleryCreator.exe again whenever you add, remove, or update a .vsix file. Or use the --watch option to regenerate the feed automatically on changes (see below).
All options can be combined. For example:
PrivateGalleryCreator.exe --input=C:\extensions --output=C:\feed\feed.xml --name="Team Extensions" --recursive --latest-only --terminateSets the directory to scan for .vsix files. Defaults to the directory containing the exe.
PrivateGalleryCreator.exe --input=C:\your\extensions\folderSets the output path for the generated feed file. Defaults to feed.xml in the input directory.
PrivateGalleryCreator.exe --output=C:\your\path\feed.xmlSets a custom gallery name. Defaults to "VSIX Gallery".
PrivateGalleryCreator.exe --name="My Team Gallery"Scans subdirectories for .vsix files in addition to the input directory.
PrivateGalleryCreator.exe --recursiveWhen multiple versions of the same extension are found, only the latest version is included in the feed. Useful when your folder retains previous versions.
PrivateGalleryCreator.exe --latest-onlySkips any .vsix files whose full path contains the specified text.
PrivateGalleryCreator.exe --exclude=experimentalOverrides the download URL used in the feed. By default, the feed references extensions relative to the feed file location. Use this option when the .vsix files will be served from a different location than where you run the tool.
PrivateGalleryCreator.exe --source=https://myserver.com/extensions/
PrivateGalleryCreator.exe --source=\\mycompany\shared\extensions\Watches the input directory for changes to .vsix files and regenerates the feed automatically. The process runs continuously until you close the console or press Ctrl+C.
PrivateGalleryCreator.exe --watchExits immediately after generating the feed. Without this option, the tool waits for a keypress before closing. Useful for scripts and CI pipelines.
PrivateGalleryCreator.exe --terminateSets the target Visual Studio version for the feed. Defaults to 17.0. This affects how extension pack IDs are serialized in the feed. Valid values are 11.0 through 17.x.
PrivateGalleryCreator.exe --version=16.0- Visual Studio auto-updates extensions from private galleries, just like it does for Marketplace extensions.
- The feed supports extensions targeting Visual Studio 2012 and newer.
- You can register a private gallery through a VS extension using a
.pkgdeffile. See this example. - For CI/CD pipelines, combine
--input,--output,--source, and--terminateto generate the feed as a build step.



