Edit

Choose the right Visual Studio extensibility model

Visual Studio provides two extensibility models: VisualStudio.Extensibility and the Visual Studio SDK (VSSDK). Use this guide to choose the right model for your scenario, or combine both SDKs in a hybrid extension when needed.

Recommendation

Start with VisualStudio.Extensibility. It's the primary recommendation for new extensions because it supports modern .NET, uses an Out-of-process architecture for better reliability, and offers the simplest way to get started. If you later need APIs that aren't yet available, you can move to In-process (hybrid) extensions while keeping VisualStudio.Extensibility as your foundation.

Note

Don't think of these as "new vs. old" models. They're both valid approaches for different scenarios today.

Important

If your extension needs to use modern .NET (for example, .NET 8 or later), you must use an out-of-process extension. In-process (VSSDK) extensions are limited to .NET Framework. Choose VisualStudio.Extensibility and its Out-of-process architecture for full access to the modern .NET ecosystem.

The models at a glance

VisualStudio.Extensibility (out of process) VSSDK
Runtime Modern .NET .NET Framework
Hosting Separate process Visual Studio process
API patterns Asynchronous APIs and code-based configuration COM, managed services, MEF, and command tables
Scenario coverage Growing API surface Broader access to in-process features
Installation Supports installation without restarting Visual Studio Requires restarting Visual Studio
Visual Studio versions Visual Studio 2022 and later Includes support for Visual Studio 2019 and earlier

Hybrid extensions use VisualStudio.Extensibility APIs in process alongside VSSDK. They retain the in-process hosting and .NET Framework requirements.

VisualStudio.Extensibility

VisualStudio.Extensibility is the modern extensibility model where extensions run outside of the main Visual Studio process. This architectural shift enables:

  • Modern .NET — target .NET 8+ and use the full ecosystem
  • Process isolation — reduces the risk of extension failures bringing down Visual Studio
  • No-restart installs — users install extensions without restarting the IDE
  • Simple, consistent APIs — IntelliSense-driven development with async patterns throughout

If you later need APIs that aren't yet available out-of-process, you can run your extension in process while still using the VisualStudio.Extensibility API surface.

VSSDK

VSSDK ↗ (Visual Studio SDK) is the model that most extensions on the Visual Studio Marketplace ↗ are based on. It's the most complete and the most powerful, but also the most complex to learn and use correctly. Extensions run in the same process as Visual Studio, which means they're limited to .NET Framework and can potentially crash or hang the IDE.

Tip

For full VSSDK documentation, including API references, walkthroughs, and samples, see the Visual Studio SDK documentation ↗.

Note

The Community Toolkit ↗ is an optional, community-maintained helper library for VSSDK. It isn't a separate extensibility model and doesn't change VSSDK's runtime, hosting, or threading requirements.

Tip

For a technical comparison of the two SDKs — including code examples, threading analysis, and architectural tradeoffs — see Detailed comparison of extensibility models.

Common scenarios

I'm new to Visual Studio extension development

Use VisualStudio.Extensibility. It provides the easiest onboarding experience and produces high-quality extensions by default.

I need APIs that VisualStudio.Extensibility doesn't support yet

Adopt the hybrid approach — create a VisualStudio.Extensibility extension that runs in process, giving you access to VSSDK APIs alongside the modern API surface.

I need to support Visual Studio 2019 and earlier

Use VSSDK. VisualStudio.Extensibility only supports Visual Studio 2022 and above.

I have an existing extension I'd like to migrate

This depends on your version support needs:

  • VS 2022+ only: Rewrite to VisualStudio.Extensibility, or use hybrid mode if you need VSSDK APIs that don't have equivalents yet.
  • Multi-version support: Refactor shared logic into a common library, then create separate VSIX projects for each target (VSSDK for VS 2019, VisualStudio.Extensibility for VS 2022+). See Migrate from VSSDK for a detailed walkthrough.

Scenarios that require VSSDK

VisualStudio.Extensibility is actively growing, but some scenarios aren't yet supported out-of-process. For these, use the hybrid approach or pure VSSDK:

Scenario VisualStudio.Extensibility VSSDK / Hybrid
Commands, menus, toolbars ✅ ✅
Tool windows ✅ ✅
Editor margins, taggers, CodeLens ✅ ✅
Language Server Protocol (LSP) ✅ ✅
Debugger visualizers ✅ ✅
Settings and options ✅ ✅
Custom editors (designer surfaces) ❌ ✅
IntelliSense providers ❌ ✅
Light bulb actions (code fixes) ❌ ✅
Custom project systems ❌ ✅
Build system integration ❌ ✅
Custom debugger engines ❌ ✅
Source control providers ❌ ✅

Tip

If your extension needs a scenario marked ❌ above, create a hybrid extension using the "VisualStudio.Extensibility Extension with VSSDK Compatibility" template. This lets you use VisualStudio.Extensibility for supported features while accessing VSSDK APIs in-process for the rest. See In-process extensions for details.

Next steps