Visual Studio Extension Deployment
Visual Studio supports three formats for deploying extensions: Visual Studio Extension (VSIX), Windows Installer (MSI), and Visual Studio Content Installer (VSI). You can also register custom controls with Visual Studio by using Platform Registration. This topic compares the different deployments strategies, and lists their capabilities.
Selecting a Deployment Method
Select your deployment format depending on the type of extension to deploy and the capabilities of the deployment method.
VSIX
When you upload extensions in the VSIX package format to the Visual Studio Gallery Web site, users can find and install them by checking for online extensions in Extension Manager. For more information about Extension Manager, see Installing and Managing Visual Studio Tools and Extensions.
You can use the VSIX format to package project and item templates, Visual Studio Integration Packages, Managed Extensibility Framework (MEF) components, toolbox controls, assemblies, and custom types. The VSIX format uses strictly file-based deployment and does not support writing to the Global Assembly Cache (GAC), or to the system registry. VSIX is the preferred deployment method for the extension types that it supports.
VSIX deployment requires that you have the Visual Studio SDK installed. For more information, see VSIX Deployment in the Visual Studio SDK documentation.
MSI
When you create a Setup project in Visual Studio, add it to the solution that contains your extension, and build the project, you get an .msi file. The MSI format supports most application and extension types, and can perform installation operations such as writing the GAC and the system registry. Extension Manager will show and install MSI-based extensions, but cannot enable or disable them. For more information about MSI deployment, see Visual Studio Installer Deployment.
VSI
The Visual Studio Content Installer does not support uploading to Visual Studio Gallery, uninstall, or writing to the GAC or the system registry. However, you can use it to deploy macros, add-ins, and code snippets, which the VSIX format does not support. For more information, see How to: Package Components to Use the Visual Studio Content Installer.
Platform Registration
In Visual Studio 2010, registration with a managed platform in the AssemblyFoldersEx registry key includes the functionality of the Toolbox Controls Installer mechanism provided in Visual Studio 2008 and earlier. The following list shows the features supported by the AssemblyFoldersEx registration.
Bulk installation for all controls in a directory without having to register controls individually.
Support for assigning icons and grouping controls in the Toolbox.
Including assemblies in the Visual Studio Add References dialog box and optionally including controls in the Toolbox Choose Items dialog box.
Simplified registration in a single location in the base framework registry key. This avoids the complexity of checking for different Visual Studio SKUs and locating each root key.
Support for a single control assembly with multiple design-time assemblies that target particular Visual Studio versions or Expression Blend versions.
For information and samples using this functionality, see Deploying a Custom Control and Design-time Assemblies.
Platform Registration in MSI
To add your assemblies to the Add References dialog box and to add your controls to the Toolbox Choose Items dialog box, you must register your assemblies with the managed platform’s AssemblyFoldersEx registry key. To install your controls in the Toolbox using your icons and tab location, you must also specify values in the Toolbox registry key. For more information, see Deploying a Custom Control and Design-time Assemblies.
Supported Extension Types
The following table shows which packaging formats support which extension types.
Extension type |
VSIX |
MSI |
VSI |
Platform Registration |
---|---|---|---|---|
Project Template |
Yes |
No |
Yes |
No |
Item Template |
Yes |
No |
Yes |
No |
Assembly |
Yes |
Yes |
No |
Yes |
MEF Component |
Yes |
Yes |
No |
No |
VSPackage |
Yes |
Yes |
No |
No |
Toolbox Control |
Yes |
Yes |
Yes |
Yes |
Macro |
No |
Yes |
Yes |
No |
Add-in |
No |
Yes |
Yes |
No |
Code Snippet |
No |
No |
Yes |
No |
Custom Extension Type |
Yes |
Yes |
No |
No |
Supported Capabilities
The following table shows which packaging formats support which installation options.
Capability |
VSIX |
MSI |
VSI |
Platform Registration |
Platform Registration in MSI |
---|---|---|---|---|---|
Enable and Disable installed extension |
Yes |
No |
No |
No |
No |
Check for updates |
Yes |
No |
No |
No |
No |
Write to system registry |
No |
Yes |
No |
Yes |
Yes |
Register with GAC |
No |
Yes |
No |
Yes |
Yes |
Configuration during install |
No |
Yes |
No |
Yes |
Yes |
Upload to Visual Studio Gallery |
Yes |
Yes |
No |
No |
No |
Double-click install |
Yes |
Yes |
Yes |
No |
Yes |
Presence in the Toolbox Choose Items dialog box |
No |
Yes |
No |
Yes |
Yes |
Presence in the Add References dialog box |
No |
Yes |
No |
Yes |
Yes |
Install before (or after) Visual Studio |
No |
Yes |
No |
Yes |
Yes |
Target additional designers, such as Expression Blend |
No |
Yes |
No |
Yes |
Yes |
Publication
You can distribute any Visual Studio extension by uploading it to a Web site or network share. If the deployment package is in the VSIX format, or is an MSI, you can make it available to Extension Manager for all Visual Studio users by uploading it to the Visual Studio Gallery Web site, which makes the package visible from Extension Manager. You can add extensions of other types to the gallery as reference links.
Related Topics
Title |
Description |
---|---|
How to: Package Components to Use the Visual Studio Content Installer |
Describes how to package macros, add-ins and code snippets into .vsi files. |
Describes the XML schema on which to base a .vsix manifest file for a Visual Studio extension. This topic is part of the Visual Studio SDK documentation. |
|
Shows how to use Extension Manager to add, remove, and enable Visual Studio extensions. |
|
Shows how to register assemblies with a platform, add Toolbox presence, and add design-time support. |