Progettare file di tabella dei comandi XML (con estensione vsct)
Un file di tabella dei comandi XML (con estensione vsct) descrive il layout e l'aspetto degli elementi di comando per un pacchetto VSPackage. Gli elementi di comando includono pulsanti, caselle combinate, menu, barre degli strumenti e gruppi di elementi di comando. Questo articolo descrive i file di tabella dei comandi XML, il modo in cui influiscono sugli elementi e i menu dei comandi e su come crearli.
Comandi, menu, gruppi e file vsct
I file con estensione vsct sono organizzati in base a comandi, menu e gruppi di comandi. I tag XML nel file con estensione vsct rappresentano ognuno di questi elementi, insieme ad altri elementi associati, ad esempio pulsanti di comando, posizionamento dei comandi e bitmap.
Quando si crea un nuovo VSPackage eseguendo il modello di pacchetto di Visual Studio, il modello genera un file con estensione vsct con gli elementi necessari per un comando di menu, una finestra degli strumenti o un editor personalizzato, a seconda delle selezioni. Questo file con estensione vsct può quindi essere modificato per soddisfare i requisiti di un VSPackage specifico. Per esempi di come modificare un file con estensione vsct , vedere Estendere menu e comandi.
Per creare un nuovo file con estensione vsct vuoto, vedere Procedura: Creare un file con estensione vsct. Dopo la creazione, aggiungere elementi, attributi e valori XML al file per descrivere il layout dell'elemento di comando. Per informazioni dettagliate su XML Schema, vedere le informazioni di riferimento su XML Schema VSCT.
Differenze tra i file con estensione ctc e vsct
Anche se il significato dietro i tag XML in un file con estensione vsct è uguale a quello dei tag nel formato di file con estensione ctc ora deprecato, l'implementazione è leggermente diversa:
Il nuovo tag extern è il percorso <in cui si fa riferimento ad altri file con estensione h da compilare, ad esempio i file per la barra degli strumenti di Visual Studio.>
Anche se i file con estensione vsct supportano l'istruzione /include , come fanno i file con estensione ctc , include anche un nuovo <elemento import> . La differenza è che /include inserisce tutte le informazioni, mentre <l'importazione inserisce> solo i nomi.
Anche se i file con estensione ctc richiedono un file di intestazione in cui si definiscono le direttive del preprocessore, non è necessario per i file con estensione vsct . Posizionare invece le direttive nella tabella dei simboli, posizionate negli <elementi Symbol> , che si trovano nella parte inferiore del file vsct .
I file con estensione vsct includono un <tag Annotation> , che consente di incorporare tutte le informazioni desiderate, ad esempio note o persino immagini.
I valori vengono archiviati come attributi nell'elemento.
I flag di comando possono essere archiviati singolarmente o in pila. IntelliSense, tuttavia, non funziona sui flag di comando in pila. Per altre informazioni sui flag di comando, vedere l'elemento CommandFlag.
È possibile specificare più tipi, ad esempio elenchi a discesa, combo e così via.
I GUID non vengono convalidati.
Ogni elemento dell'interfaccia utente ha una stringa che rappresenta il testo visualizzato con esso.
L'elemento padre è facoltativo. Se omesso, viene utilizzato il valore Group Unknown .
L'argomento Icon è facoltativo.
Sezione Bitmap: questa sezione è identica a quella di un file con estensione ctc , ad eccezione del fatto che è ora possibile specificare un nome di file tramite Href che verrà eseguito il pull dal compilatore vsct.exe in fase di compilazione.
ResID: l'ID risorsa bitmap precedente può essere usato e funziona ancora come nei file con estensione ctc .
HRef: nuovo metodo che consente di specificare un nome file per la risorsa bitmap. Si presuppone che tutti vengano usati, quindi è possibile omettere la sezione Usato. Il compilatore cercherà prima di tutto le risorse locali per il file, quindi in tutte le condivisioni di rete ed eventuali risorse definite dall'opzione /I .
Keybinding: non è più necessario specificare un emulatore. Se si specifica uno, il compilatore presuppone che l'editor e l'emulatore siano uguali.
Keychord: keychord è stato eliminato. Il nuovo formato è Key1,Mod1,Key2,Mod2. È possibile specificare una costante carattere, esadecimale o VK.
Il nuovo compilatore, vsct.exe, compila sia i file con estensione ctc che vsct. Il compilatore ctc.exe precedente, tuttavia, non riconosce o compila i file con estensione vsct.
È possibile usare il compilatore vsct.exe per convertire un file con estensione cto esistente in un file vsct. Per altre informazioni, vedere Procedura: Creare un file con estensione vsct da un file con estensione cto esistente.
Elementi del file vsct
La tabella dei comandi include la gerarchia e gli elementi seguenti:
Elemento CommandTable: rappresenta tutti i comandi, i gruppi di menu e i menu associati al pacchetto VSPackage.
Elemento Extern: fa riferimento a tutti i file con estensione h esterni da unire con il file vsct .
Elemento Include: fa riferimento a eventuali file di intestazione aggiuntivi (con estensione h) da compilare insieme al file vsct. Un file con estensione vsct può includere file con estensione h contenenti costanti che definiscono comandi, gruppi di menu e menu forniti dall'IDE o da un altro pacchetto VSPackage.
Elemento Commands: rappresenta tutti i singoli comandi che possono essere eseguiti. Ogni comando ha i quattro elementi figlio seguenti:
Elemento Menu: rappresenta tutti i menu e le barre degli strumenti nel pacchetto VSPackage. I menu sono contenitori per gruppi di comandi.
Elemento Groups: rappresenta tutti i gruppi nel pacchetto VSPackage. I gruppi sono raccolte di singoli comandi.
Elemento Buttons: rappresenta tutti i pulsanti di comando e le voci di menu nel VSPackage. I pulsanti sono controlli visivi che possono essere associati ai comandi.
Elemento Bitmap: rappresenta tutte le bitmap per tutti i pulsanti nel pacchetto VSPackage. Le bitmap sono immagini che vengono visualizzate accanto o sui pulsanti di comando, a seconda del contesto.
Elemento CommandPlacements: indica posizioni aggiuntive in cui i singoli comandi devono essere posizionati nei menu del pacchetto VSPackage.
Elemento VisibilityConstraints: specifica se un comando viene visualizzato in qualsiasi momento o solo in determinati contesti, ad esempio quando viene visualizzata una finestra di dialogo o una finestra specifica. Menu e comandi con valore per questo elemento verranno visualizzati solo quando il contesto specificato è attivo. Il comportamento predefinito consiste nel visualizzare sempre il comando.
Elemento KeyBindings: specifica i tasti di scelta rapida per i comandi. Ovvero, una o più combinazioni di tasti che devono essere premute per eseguire il comando, ad esempio CTRL+S.
Elemento UsedCommands: informa l'ambiente di Visual Studio che, sebbene il comando specificato sia implementato da altro codice, quando il VSPackage corrente è attivo, fornisce l'implementazione del comando.
Elemento Symbols: contiene i nomi dei simboli e gli ID GUID per tutti i comandi nel pacchetto.
Linee guida per la progettazione di file con estensione vsct
Per progettare correttamente un file con estensione vsct , seguire queste linee guida.
I comandi possono essere posizionati solo in gruppi, i gruppi possono essere posizionati solo nei menu e i menu possono essere posizionati solo in gruppi. Solo i menu vengono effettivamente visualizzati nell'IDE, i gruppi e i comandi non sono.
I sottomenu non possono essere assegnati direttamente a un menu, ma devono essere assegnati a un gruppo, che a sua volta è assegnato a un menu.
I comandi, i sottomenu e i gruppi possono essere assegnati a un gruppo o a un menu padre usando il campo padre della direttiva di definizione.
L'organizzazione di una tabella dei comandi esclusivamente tramite i campi padre nelle direttive presenta una limitazione significativa. Le direttive che definiscono oggetti possono accettare un solo argomento padre.
Il riutilizzo di comandi, gruppi o sottomenu richiede l'uso di una nuova direttiva per creare una nuova istanza dell'oggetto con la propria
GUID:ID
coppia.Ogni
GUID:ID
coppia deve essere univoca. Il riutilizzo di un comando che, ad esempio, è stato posizionato su un menu, su una barra degli strumenti o su un menu di scelta rapida, viene gestito dall'interfaccia IOleCommandTarget .I comandi e i sottomenu possono anche essere assegnati a più gruppi e i gruppi possono essere assegnati a più menu usando l'elemento Commands.
Note sul file con estensione vsct
Se si apportano modifiche a un file con estensione vsct dopo averlo compilato e inserito in una DLL satellite nativa, è necessario eseguire devenv.exe /setup /nosetupvstemplates. In questo modo le risorse VSPackage specificate nel Registro di sistema sperimentale devono essere rilette e il database interno che descrive Visual Studio da ricompilare.
Durante lo sviluppo, è possibile creare e registrare più progetti VSPackage nell'hive del Registro di sistema sperimentale che possono causare confusione nell'IDE. Per risolvere questo problema, è possibile reimpostare l'hive sperimentale sulle impostazioni predefinite per rimuovere tutti i pacchetti VSPackage registrati e le eventuali modifiche apportate all'IDE. Per reimpostare l'hive sperimentale, usare lo strumento CreateExpInstance.exe fornito con Visual Studio SDK. È possibile trovarlo all'indirizzo:
%PROGRAMFILES(x86)%\Visual Studio\<version> SDK\VisualStudioIntegration\Tools\Bin\CreateExpInstance.exe
Eseguire lo strumento usando il comando CreateExpInstance /Reset. Tenere presente che questo strumento rimuove dall'hive sperimentale tutti i VSPackage registrati non installati normalmente con Visual Studio.