Scegliere il modello di estendibilità di Visual Studio giusto

Visual Studio fornisce due modelli di estendibilità: VisualStudio.Extensibility e Visual Studio SDK (VSSDK). Usa questa guida per scegliere il modello giusto per il tuo scenario oppure combinare entrambi gli SDK in un'estensione ibrida, quando necessario.

Recommendation

Introduzione a VisualStudio.Extensibility. È l'opzione consigliata principale per le nuove estensioni perché supporta .NET moderno, usa un'architettura fuori processo per una maggiore affidabilità e offre il modo più semplice per iniziare. Se in seguito hai bisogno di API che non sono ancora disponibili, puoi passare a estensioni in-process (ibride) mantenendo VisualStudio.Extensibility come base.

Note

Non considerare questi modelli in termini di «nuovi» e «vecchi». Sono entrambi approcci validi per scenari diversi.

Important

Se l'estensione deve usare .NET moderno (ad esempio, .NET 8 o versione successiva), è necessario usare un'estensione out-of-process. Le estensioni IN-process (VSSDK) sono limitate a .NET Framework. Scegliere VisualStudio.Extensibility e l'architettura out-of-process per l'accesso completo all'ecosistema di .NET moderno.

Panoramica dei modelli

VisualStudio.Extensibility (out-of-process) VSSDK
runtime .NET moderno .NET Framework
Servizio di hosting Processo separato processo di Visual Studio
Pattern API API asincrone e configurazione basata su codice COM, servizi gestiti, MEF e tabelle dei comandi
Copertura dello scenario Espansione dell'API Accesso più ampio alle funzionalità in corso
Installation Supporta l'installazione senza riavviare Visual Studio Richiede il riavvio Visual Studio
versioni di Visual Studio Visual Studio 2022 e versioni successive Include il supporto per Visual Studio 2019 e versioni precedenti

Le estensioni ibride usano le API VisualStudio.Extensibility in processo insieme a VSSDK. Mantengono i requisiti di hosting in-process e .NET Framework.

VisualStudio.Extensibility

VisualStudio.Extensibility è il modello di estendibilità moderno in cui le estensioni vengono eseguite all'esterno del processo di Visual Studio principale. Questo passaggio dell'architettura consente di:

  • Moderno .NET : target .NET 8+ e usare l'ecosistema completo
  • Isolamento del processo: riduce il rischio di errori di estensione che causano l'arresto di Visual Studio
  • Installazioni senza riavvio — gli utenti possono installare le estensioni senza riavviare l'IDE
  • API semplici e coerenti — sviluppo basato su IntelliSense con modelli asincroni ovunque

Se in un secondo momento sono necessarie API che non sono ancora disponibili out-of-process, è possibile eseguire l'estensione in-process mentre si usano ancora le API di VisualStudio.Extensibility.

VSSDK

VSSDK ↗ (Visual Studio SDK) è il modello su cui si basa la maggior parte delle estensioni nel Visual Studio Marketplace ↗. È il più completo e il più potente, ma anche il più complesso da imparare e usare correttamente. Le estensioni vengono eseguite nello stesso processo di Visual Studio, il che significa che sono limitate a .NET Framework e possono potenzialmente causare l'arresto anomalo o il blocco dell'IDE.

Tip

Per la documentazione completa di VSSDK, inclusi riferimenti api, procedure dettagliate ed esempi, vedere la documentazione ↗ di Visual Studio SDK.

Note

Community Toolkit ↗ è una libreria helper facoltativa gestita dalla community per VSSDK. Non si tratta di un modello di estendibilità separato e non modifica i requisiti di runtime, hosting o thread di VSSDK.

Tip

Per un confronto tecnico dei due SDK, inclusi esempi di codice, analisi del threading e compromessi architetturali, vedere Confronto dettagliato dei modelli di estendibilità.

Scenari comuni

Sono nuovo allo sviluppo di estensioni per Visual Studio

Usare VisualStudio.Extensibility. Fornisce l'esperienza di onboarding più semplice e produce estensioni di alta qualità per impostazione predefinita.

Ho bisogno di API che VisualStudio.Extensibility non supporta ancora

Adottare l'approccio ibrido: creare un'estensione VisualStudio.Extensibility che viene eseguita nel processo, offrendo l'accesso alle API VSSDK insieme alla superficie API moderna.

Devo supportare Visual Studio 2019 e versioni precedenti

Usare VSSDK. VisualStudio.Extensibility supporta solo Visual Studio 2022 e versioni successive.

Si dispone di un'estensione esistente di cui eseguire la migrazione

Questo dipende dalle tue esigenze di supporto per la versione:

  • Solo VS 2022+: riscrivere in VisualStudio.Extensibility o usare la modalità ibrida se sono necessarie API VSSDK che non hanno ancora equivalenti.
  • Supporto per più versioni: eseguire il refactoring della logica condivisa in una libreria comune, quindi creare progetti VSIX separati per ogni destinazione (VSSDK per VS 2019, VisualStudio.Extensibility per VS 2022+). Per una procedura dettagliata, vedere Eseguire la migrazione da VSSDK .

Scenari che richiedono VSSDK

VisualStudio.Extensibility sta crescendo attivamente, ma alcuni scenari non sono ancora supportati out-of-process. Per questi, usare l'approccio ibrido o VSSDK puro:

Scenario VisualStudio.Extensibility VSSDK / Hybrid
Comandi, menu, barre degli strumenti ✅ ✅
Finestre degli strumenti ✅ ✅
Margini dell'editor, taggger, CodeLens ✅ ✅
Language Server Protocol (LSP) ✅ ✅
Visualizzatori del debugger ✅ ✅
Impostazioni e opzioni ✅ ✅
Editor personalizzati (aree di progettazione) ❌ ✅
provider IntelliSense ❌ ✅
Azioni della lampadina (correzioni del codice) ❌ ✅
Sistemi personalizzati del progetto ❌ ✅
Integrazione del sistema di build ❌ ✅
Motori di debug personalizzati ❌ ✅
Fornitori del controllo del codice sorgente ❌ ✅

Tip

Se l'estensione richiede uno scenario contrassegnato ❌ in precedenza, creare un'estensione ibrida usando il modello "Estensione VisualStudio.Extensibility con compatibilità VSSDK". In questo modo è possibile usare VisualStudio.Extensibility per le funzionalità supportate durante l'accesso alle API VSSDK in-process per il resto. Vedere Estensioni in-process per i dettagli.

Passaggi successivi