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.
Nei comandi di Visual Studio vengono gestiti da diversi componenti. I comandi vengono instradati dal contesto più interno, basato sulla selezione corrente, al contesto più esterno (noto anche come globale). Per altre informazioni, vedere Disponibilità dei comandi.
Ordine di risoluzione dei comandi
I comandi vengono passati attraverso i livelli seguenti del contesto di comando:
Componenti aggiuntivi: l'ambiente offre innanzitutto il comando a tutti i componenti aggiuntivi presenti.
Comandi di priorità: questi comandi vengono registrati tramite IVsRegisterPriorityCommandTarget. Vengono chiamati per ogni comando in Visual Studio e vengono chiamati nell'ordine in cui sono stati registrati.
Comandi di menu di scelta rapida: un comando che si trova in un menu di scelta rapida viene prima offerto alla destinazione del comando fornita al menu di scelta rapida e successivamente al routing tipico.
Destinazioni comando impostate sulla barra degli strumenti: queste destinazioni di comando vengono registrate quando si chiama SetupToolbar2. Il
pCmdTargetparametro può esserenull. Se non ènull, questa destinazione del comando viene utilizzata per aggiornare eventuali comandi presenti sulla barra degli strumenti che si sta impostando. Se la shell sta configurando la barra degli strumenti, passa il frame della finestra comepCmdTarget, in modo tale che tutti gli aggiornamenti ai comandi della barra degli strumenti vengano effettuati tramite il frame della finestra, anche quando non è messa a fuoco.Finestra degli strumenti: le finestre degli strumenti, che in genere implementano l'interfaccia IVsWindowPane , devono implementare anche l'interfaccia IOleCommandTarget in modo che Visual Studio possa ottenere la destinazione del comando quando la finestra degli strumenti è la finestra attiva. Tuttavia, se la finestra degli strumenti con stato attivo è la finestra Progetto , il comando viene indirizzato all'interfaccia IVsUIHierarchy padre comune degli elementi selezionati. Se questa selezione si estende su più progetti, il comando viene indirizzato alla IVsSolution gerarchia. L'interfaccia IVsUIHierarchy contiene i QueryStatusCommand metodi e ExecCommand analoghi ai comandi corrispondenti nell'interfaccia IOleCommandTarget .
Finestra documento: se il comando ha il
RouteToDocsflag impostato nel relativo file con estensione vsct , Visual Studio cerca una destinazione di comando nell'oggetto visualizzazione documento, ovvero un'istanza di un'interfaccia IVsWindowPane o un'istanza di un oggetto documento (in genere un'interfaccia IVsTextLines o un'interfaccia IVsTextBuffer ). Se l'oggetto di visualizzazione del documento non supporta il comando, Visual Studio instrada il comando all'interfaccia IOleCommandTarget che viene restituita. Si tratta di un'interfaccia facoltativa per gli oggetti dati del documento.Gerarchia corrente: la gerarchia corrente può essere il progetto proprietario della finestra del documento attiva o della gerarchia selezionata in Esplora soluzioni. Visual Studio cerca l'interfaccia IOleCommandTarget implementata nella gerarchia corrente o attiva. La gerarchia deve supportare i comandi validi ogni volta che la gerarchia è attiva, anche se una finestra del documento di un elemento di progetto è attiva. Tuttavia, i comandi che si applicano solo quando Esplora soluzioni ha lo stato attivo devono essere supportati usando l'interfaccia IVsUIHierarchy e i relativi QueryStatusCommand metodi e ExecCommand .
I comandi Taglia, Copia, Incolla, Elimina, Rinomina, Invio e DoubleClick richiedono una gestione speciale. Per informazioni su come gestire i comandi Elimina e Rimuovi nelle gerarchie, vedere l'interfaccia IVsHierarchyDeleteHandler .
Globale: se un comando non è stato gestito dai contesti indicati in precedenza, Visual Studio tenta di instradarlo al VSPackage proprietario di un comando che implementa l'interfaccia IOleCommandTarget . Se il pacchetto VSPackage non è già stato caricato, non viene caricato quando Visual Studio chiama il QueryStatus metodo . Il pacchetto VSPackage viene caricato solo quando viene chiamato il Exec metodo .