Share via


Progettazione dei comandi

Quando si aggiunge un comando a un VSPackage, è necessario specificare dove deve essere visualizzato, quando è disponibile e come deve essere gestito.

Definire i comandi

Per definire nuovi comandi, includere un file di tabella dei comandi (con estensione vsct) di Visual Studio nel progetto VSPackage. Se è stato creato un PACCHETTO VSPackage usando il modello di pacchetto di Visual Studio, il progetto include uno di questi file. Per altre informazioni, vedere File della tabella dei comandi di Visual Studio (con estensione vsct).

Visual Studio unisce tutti i file con estensione vsct trovati in modo che possa visualizzare i comandi. Poiché questi file sono distinti dal file binario VSPackage, Visual Studio non deve caricare il pacchetto per trovare i comandi. Per altre informazioni, vedere Come i pacchetti VSPackage aggiungono elementi dell'interfaccia utente.

Visual Studio usa l'attributo ProvideMenuResourceAttribute di registrazione per definire le risorse e i comandi del menu. Per altre informazioni, vedere Implementazione dei comandi.

I comandi possono essere modificati in fase di esecuzione in diversi modi. Possono essere visualizzati o nascosti, abilitati o disabilitati. Possono visualizzare testo o icone diversi o contenere valori diversi. È possibile eseguire una grande quantità di personalizzazione prima che Visual Studio carichi il pacchetto VSPackage. Per altre informazioni, vedere Come i pacchetti VSPackage aggiungono elementi dell'interfaccia utente.

Gestori dei comandi

Quando si crea un comando, è necessario fornire un gestore eventi per eseguire il comando. Se l'utente seleziona il comando, deve essere instradato in modo appropriato. Instradare un comando significa inviarlo al VSPackage corretto per abilitarlo o disabilitarlo, nasconderlo o visualizzarlo ed eseguirlo se l'utente sceglie di farlo. Per altre informazioni, vedere Algoritmo di routing dei comandi.

Ambiente dei comandi di Visual Studio

Visual Studio può ospitare un numero qualsiasi di PACCHETTI VSPackage e ognuno può contribuire con il proprio set di comandi. L'ambiente visualizza solo i comandi appropriati per l'attività corrente. Per altre informazioni, vedere Disponibilità dei comandi e Oggetti contesto di selezione.

Un VSPackage che definisce nuovi comandi, menu, barre degli strumenti o menu di scelta rapida fornisce informazioni sui comandi a Visual Studio in fase di installazione tramite voci del Registro di sistema che fanno riferimento a risorse in assembly nativi o gestiti. Ogni risorsa fa quindi riferimento a un file di risorsa dati binaria (con estensione cto), generato durante la compilazione di un file di tabella dei comandi di Visual Studio (con estensione vsct). Ciò consente a Visual Studio di fornire set di comandi, menu e barre degli strumenti uniti senza dover caricare ogni PACCHETTO VSPackage installato.

Organizzazione dei comandi

L'ambiente posiziona i comandi per gruppo, priorità e menu.

  • I gruppi sono raccolte logiche di comandi correlati, ad esempio il gruppo di comandi Taglia, Copia e Incolla . I gruppi sono i comandi visualizzati nei menu.

  • La priorità determina l'ordine in cui vengono visualizzati i singoli comandi in un gruppo nel menu.

  • I menu fungono da contenitori per i gruppi.

    L'ambiente consente di impostare alcuni comandi, gruppi e menu. Per altre informazioni, vedere Posizionamento predefinito di comandi, gruppi e barre degli strumenti.

    Un comando può essere assegnato a un gruppo primario. Il gruppo primario controlla la posizione del comando nella struttura del menu principale e nella finestra di dialogo Personalizza . Un comando può essere visualizzato in più gruppi; Ad esempio, un comando può trovarsi nel menu principale, in un menu di scelta rapida e in una barra degli strumenti. Per altre informazioni, vedere Come i pacchetti VSPackage aggiungono elementi dell'interfaccia utente.

Routing dei comandi

Il processo di richiamo e routing dei comandi per i pacchetti VSPackage differisce dal processo di chiamata dei metodi nelle istanze di oggetti.

L'ambiente instrada i comandi in sequenza dal contesto di comando più interno (locale), basato sulla selezione corrente, al contesto più esterno (globale). Il primo contesto in grado di eseguire il comando è quello che lo gestisce. Per altre informazioni, vedere Algoritmo di routing dei comandi.

Nella maggior parte dei casi, l'ambiente gestisce i comandi usando l'interfaccia IOleCommandTarget . Poiché lo schema di routing dei comandi consente a molti oggetti diversi di gestire i comandi, IOleCommandTarget può essere implementato da un numero qualsiasi di oggetti. Questi includono controlli Microsoft ActiveX, implementazioni della visualizzazione finestra, oggetti documento, gerarchie di progetto e oggetti VSPackage stessi (per i comandi globali). In alcuni casi specializzati, ad esempio, i comandi di routing in una gerarchia, l'interfaccia IVsHierarchy deve essere implementata.

Posizione Descrizione
Implementazione dei comandi Viene descritto come implementare i comandi in un pacchetto VSPackage.
Disponibilità dei comandi Descrive in che modo il contesto di Visual Studio determina quali comandi sono disponibili.
Algoritmo di routing dei comandi Descrive il modo in cui l'architettura di routing dei comandi di Visual Studio consente di gestire i comandi da pacchetti VSPackage diversi.
Linee guida per il posizionamento dei comandi Suggerisce come posizionare i comandi nell'ambiente di Visual Studio.
Come i pacchetti VSPackage aggiungono elementi dell'interfaccia utente Descrive in che modo i pacchetti VSPackage possono usare al meglio l'architettura dei comandi di Visual Studio.
Posizionamento predefinito di comandi, gruppi e barre degli strumenti Descrive in che modo i pacchetti VSPackage possono usare al meglio i comandi inclusi in Visual Studio.
Gestire pacchetti VSPackage Descrive il modo in cui Visual Studio carica i pacchetti VSPackage.
File della tabella dei comandi di Visual Studio (con estensione vsct) Fornisce informazioni sui file vsct basati su XML, usati per descrivere il layout e l'aspetto dei comandi in VSPackage.