Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
- Crea la tua prima estensione — crea qualcosa in 5 minuti
- Installa gli strumenti : configurare l'ambiente di sviluppo
- Estensioni in-process — quando hai bisogno delle API VSSDK insieme a VisualStudio.Extensibility
- Confronto dettagliato dei modelli : esempi di codice e approfondimento del threading
- Esplora esempi su GitHub ↗