Start developing extensions in Visual Studio

If you've never written a Visual Studio extension before, you probably have some questions. We've listed some of the most common ones here. If you don't see the information you're looking for, use the feedback button at the upper right of this page to ask for what you want.

Note

This article applies to Visual Studio on Windows. For Visual Studio for Mac, see Extending Visual Studio for Mac. For Visual Studio Code, see Visual Studio Code Extension API.

What software do I need to develop Visual Studio extensions?

You need to install the Visual Studio SDK in addition to Visual Studio in order to develop Visual Studio extensions. You can install the Visual Studio SDK as part of regular setup, or you can install it later on. For more information about installing the Visual Studio SDK, see Install the Visual Studio SDK.

What kinds of things can I do with Visual Studio extensions?

The sky's the limit when it comes to imagining different Visual Studio extensions. Of course, most extensions have something to do with writing code, but that doesn't have to be the case. Here are some examples of the kinds of extensions you can build:

  • Support for languages that aren't included in Visual Studio, with syntax coloring, IntelliSense, and compiler and debug support.

  • Productivity tools that extend the core IDE experience with more templates, code refactoring, new dialogs or tool windows.

  • Domain-specific designers for scenarios like data design or cloud support.

For examples of extensions, check out the Visual Studio Marketplace. Many extensions are open-sourced, and the Marketplace includes links to their GitHub repo.

Which Visual Studio features can I extend?

In theory, you can extend just about any part of Visual Studio: menus, toolbars, commands, windows, solutions, projects, editors, and so on.

In practice, we have found that the features most people want to extend are commands, menus and toolbars, windows, IntelliSense, and projects. Here are links to the relevant sections:

What project templates are provided by the VSSDK?

The two main types of extensions are VSPackages and MEF extensions. In general, VSPackage extensions are used for extensions that use or extend commands, tool windows, and projects. MEF extensions are used to extend or customize the Visual Studio editor.

For Visual C# and Visual Basic extensions, the VSSDK provides an empty VSIX project template that you can use together with the new item templates that create menu commands, tool windows, and editor extensions. You can also use this template to package project templates, code snippets, and other artifacts for distribution to other users.

For C++, the VSPackage wizard provides the code to add menu commands, tool windows, and custom editors.

The Isolated Shell template is used to package an extension in a version of the Visual Studio shell that you can brand and distribute as your own. The following articles show you how to get started with each kind of extension:

How do I get my extension to look like Visual Studio?

Get great tips for designing the UI for your extension in Visual Studio User Experience Guidelines.

Where can I find examples of VSSDK code?

Each of the links listed in the preceding section has step-by-step walkthroughs that show you how to implement specific features. You can also find open-source VSSDK samples on GitHub at Visual Studio Samples.

How can I distribute my extension?

You can install your extension on another computer or send it to your friends as a .vsix file, which you install by double-clicking it. You can find out more about VSIX packages at Shipping Visual Studio Extensions.

You can also publish your extension on the Visual Studio Marketplace, which makes it visible to a large number of Visual Studio customers. For an example of packaging an extension to the Marketplace, see Walkthrough: Publishing a Visual Studio Extension. For more information about what you need to do to publish on the Marketplace, see Products and Extensions for Visual Studio.