Creare file con estensione vsct
Questo documento illustra come creare un file con estensione vsct per aggiungere voci di menu, barre degli strumenti e altri elementi dell'interfaccia utente all'ambiente di sviluppo integrato (IDE) di Visual Studio. Usare questi passaggi quando si aggiungono elementi dell'interfaccia utente a un pacchetto di Visual Studio (VSPackage) che non dispone già di un file vsct .
Per i nuovi progetti, è consigliabile usare il modello di pacchetto di Visual Studio perché genera un file con estensione vsct che, a seconda delle selezioni, include già gli elementi necessari per un comando di menu, una finestra degli strumenti o un editor personalizzato. È possibile modificare questo file con estensione vsct per soddisfare i requisiti del pacchetto VSPackage. Per altre informazioni su come modificare un file con estensione vsct , vedere gli esempi in Estendere menu e comandi.
Creare il file
Creare un file con estensione vsct in queste fasi: creare la struttura per file e risorse, dichiarare gli elementi dell'interfaccia utente, inserire gli elementi dell'interfaccia utente nell'IDE e aggiungere eventuali comportamenti specializzati.
Struttura del file
La struttura di base di un file con estensione vsct è un elemento radice CommandTable che contiene un elemento Commands e un elemento Symbols .
Per creare la struttura di file
Aggiungere un file vsct al progetto seguendo la procedura descritta in Procedura: Creare un file con estensione vsct.
Aggiungere gli spazi dei nomi necessari all'elemento
CommandTable
, come illustrato nell'esempio seguente:<CommandTable xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable" xmlns:xs="http://www.w3.org/2001/XMLSchema">
Nell'elemento
CommandTable
aggiungere unCommands
elemento per ospitare tutti i menu personalizzati, le barre degli strumenti, i gruppi di comandi e i comandi. In modo che gli elementi dell'interfaccia utente personalizzati possano essere caricati, l'elemento deve averePackage
l'attributoCommands
impostato sul nome del pacchetto.Dopo l'elemento
Commands
, aggiungere unSymbols
elemento per definire i GUID per il pacchetto e i nomi e gli ID dei comandi per gli elementi dell'interfaccia utente.
Includere risorse di Visual Studio
Usare l'elemento Extern per accedere ai file che definiscono i comandi di Visual Studio e i menu necessari per inserire gli elementi dell'interfaccia utente nell'IDE. Se si useranno comandi definiti all'esterno del pacchetto, usare l'elemento UsedCommands per informare Visual Studio.
Per includere le risorse di Visual Studio
Nella parte superiore dell'elemento
CommandTable
aggiungere unExtern
elemento per ogni file esterno a cui fare riferimento e impostare l'attributohref
sul nome del file. È possibile fare riferimento ai file di intestazione seguenti per accedere alle risorse di Visual Studio:Stdidcmd.h: definisce gli ID per tutti i comandi esposti da Visual Studio.
Vsshlids.h: contiene gli ID comando per i menu di Visual Studio.
Se il pacchetto chiama i comandi definiti da Visual Studio o da altri pacchetti, aggiungere un
UsedCommands
elemento dopo l'elementoCommands
. Popolare questo elemento con un elemento UsedCommand per ogni comando chiamato che non fa parte del pacchetto. Impostare gliguid
attributi eid
degliUsedCommand
elementi sui valori GUID e ID dei comandi da chiamare.Per altre informazioni su come trovare i GUID e gli ID dei comandi di Visual Studio, vedere GUID e ID dei comandi di Visual Studio. Per chiamare comandi da altri pacchetti, usare il GUID e l'ID del comando come definito nel file vsct per tali pacchetti.
Dichiarare gli elementi dell'interfaccia utente
Dichiara tutti i nuovi elementi dell'interfaccia utente nella Symbols
sezione del file vsct .
Per dichiarare gli elementi dell'interfaccia utente
Nell'elemento
Symbols
aggiungere tre elementi GuidSymbol . OgniGuidSymbol
elemento ha unname
attributo e unvalue
attributo. Impostare l'attributoname
in modo che rifletta lo scopo dell'elemento. L'attributovalue
accetta un GUID. (Per generare un GUID, nel Menu Strumenti , selezionare Crea GUID e quindi selezionare Formato registro.Il primo
GuidSymbol
elemento rappresenta il pacchetto e in genere non ha elementi figlio. Il secondoGuidSymbol
elemento rappresenta il set di comandi e conterrà tutti i simboli che definiscono i menu, i gruppi e i comandi. Il terzoGuidSymbol
elemento rappresenta l'archivio immagini e contiene simboli per tutte le icone per i comandi. Se non si dispone di comandi che usano icone, è possibile omettere il terzoGuidSymbol
elemento.Nell'elemento che rappresenta il
GuidSymbol
set di comandi aggiungere uno o più elementi IDSymbol . Ognuno di questi rappresenta un menu, una barra degli strumenti, un gruppo o un comando da aggiungere all'interfaccia utente.Per ogni
IDSymbol
elemento, impostare l'attributoname
sul nome che verrà usato per fare riferimento al menu, al gruppo o al comando corrispondente e quindi impostare l'elementovalue
su un numero esadecimale che rappresenterà il relativo ID comando. Nessun elementoIDSymbol
con lo stesso elemento padre può avere lo stesso valore.Se uno degli elementi dell'interfaccia utente richiede icone, aggiungere un
IDSymbol
elemento per ogni icona all'elemento che rappresenta l'archivioGuidSymbol
immagini.
Inserire elementi dell'interfaccia utente nell'IDE
Gli elementi Menu, Gruppi e Pulsanti contengono le definizioni per tutti i menu, i gruppi e i comandi definiti nel pacchetto. Inserire questi menu, gruppi e comandi nell'IDE usando un elemento Parent , che fa parte della definizione dell'elemento dell'interfaccia utente o usando un elemento CommandPlacement definito altrove.
Ogni Menu
elemento , Group
e Button
ha un guid
attributo e un id
attributo . Impostare sempre l'attributo guid
in modo che corrisponda al nome dell'elemento GuidSymbol
che rappresenta il set di comandi e impostare l'attributo id
sul nome dell'elemento IDSymbol
che rappresenta il menu, il gruppo o il comando nella Symbols
sezione.
Per definire gli elementi dell'interfaccia utente
Se si definiscono nuovi menu, sottomenu, menu di scelta rapida o barre degli strumenti, aggiungere un
Menus
elemento all'elementoCommands
. Quindi, per ogni menu da creare, aggiungere un elemento Menu all'elementoMenus
.Impostare gli
guid
attributi eid
dell'elementoMenu
e quindi impostare l'attributotype
sul tipo di menu desiderato. È anche possibile impostare l'attributopriority
per stabilire la posizione relativa del menu nel gruppo padre.Nota
L'attributo
priority
non si applica alle barre degli strumenti e ai menu di scelta rapida.Tutti i comandi nell'IDE di Visual Studio devono essere ospitati dai gruppi di comandi, ovvero gli elementi figlio diretti di menu e barre degli strumenti. Se si aggiungono nuovi menu o barre degli strumenti all'IDE, questi devono contenere nuovi gruppi di comandi. È anche possibile aggiungere gruppi di comandi a menu e barre degli strumenti esistenti in modo da poter raggruppare visivamente i comandi.
Quando si aggiungono nuovi gruppi di comandi, è prima necessario creare un
Groups
elemento e quindi aggiungerlo a esso un elemento Group per ogni gruppo di comandi.Impostare gli
guid
attributi eid
di ogniGroup
elemento e quindi impostare l'attributopriority
per stabilire la posizione relativa del gruppo nel menu padre. Per altre informazioni, vedere Creare gruppi riutilizzabili di pulsanti.Se si aggiungono nuovi comandi all'IDE, aggiungere un
Buttons
elemento all'elementoCommands
. Quindi, per ogni comando, aggiungere un elemento Button all'elementoButtons
.Impostare gli
guid
attributi eid
di ogniButton
elemento e quindi impostare l'attributotype
sul tipo di pulsante desiderato. È anche possibile impostare l'attributopriority
per stabilire la posizione relativa del comando nel gruppo padre.Nota
Usare
type="button"
per i comandi e i pulsanti di menu standard sulle barre degli strumenti.Nell'elemento aggiungere un elemento Strings che contiene un elemento ButtonText e un elemento CommandName.
Button
L'elementoButtonText
fornisce l'etichetta di testo per una voce di menu o la descrizione comando per un pulsante della barra degli strumenti. L'elementoCommandName
fornisce il nome del comando da usare nell'area dei comandi.Se il comando avrà un'icona, creare un elemento Icon nell'elemento
Button
e impostarneguid
gli attributi eid
sull'elementoBitmap
per l'icona.Nota
I pulsanti della barra degli strumenti devono avere icone.
Per altre informazioni, vedere MenuCommands e OleMenuCommands.
Se uno dei comandi richiede icone, aggiungere un elemento Bitmap all'elemento
Commands
. Quindi, per ogni icona, aggiungere un elemento Bitmap all'elementoBitmaps
. Qui si specifica il percorso della risorsa bitmap. Per altre informazioni, vedere Aggiungere icone ai comandi di menu.È possibile fare affidamento sulla struttura padre per posizionare correttamente la maggior parte dei menu, dei gruppi e dei comandi. Per i set di comandi di dimensioni molto grandi o quando un menu, un gruppo o un comando deve essere visualizzato in più posizioni, è consigliabile specificare il posizionamento dei comandi.
Per fare affidamento sull'elemento padre per inserire gli elementi dell'interfaccia utente nell'IDE
Per l'elemento padre tipico, creare un
Parent
elemento in ogniMenu
elemento ,Group
eCommand
definito nel pacchetto.La destinazione dell'elemento
Parent
è il menu o il gruppo che conterrà il menu, il gruppo o il comando.Impostare l'attributo
guid
sul nome dell'elementoGuidSymbol
che definisce il set di comandi. Se l'elemento di destinazione non fa parte del pacchetto, usare il GUID per il set di comandi, come definito nel file con estensione vsct corrispondente.Impostare l'attributo
id
in modo che corrisponda all'attributoid
del menu o del gruppo di destinazione. Per un elenco dei menu e dei gruppi esposti da Visual Studio, vedere GUID e ID di menu o GUID di Visual Studio e ID delle barre degli strumenti di Visual Studio.
Se si dispone di un numero elevato di elementi dell'interfaccia utente da inserire nell'IDE o se sono presenti elementi che devono essere visualizzati in più posizioni, definire la posizione nell'elemento CommandPlacements , come illustrato nei passaggi seguenti.
Per usare il posizionamento dei comandi per inserire gli elementi dell'interfaccia utente nell'IDE
Dopo l'elemento
Commands
aggiungere un elementoCommandPlacements
.Nell'elemento
CommandPlacements
aggiungere unCommandPlacement
elemento per ogni menu, gruppo o comando da inserire.Ogni
CommandPlacement
elemento oParent
elemento inserisce un menu, un gruppo o un comando in un'unica posizione dell'IDE. Un elemento dell'interfaccia utente può avere un solo elemento padre, ma può avere più posizionamenti dei comandi. Per inserire un elemento dell'interfaccia utente in più posizioni, aggiungere unCommandPlacement
elemento per ogni posizione.Impostare gli
guid
attributi eid
di ogniCommandPlacement
elemento sul menu o sul gruppo di hosting, proprio come per unParent
elemento. È anche possibile impostare l'attributopriority
per stabilire la posizione relativa dell'elemento dell'interfaccia utente.È possibile combinare il posizionamento tramite l'elemento padre e il posizionamento dei comandi. Tuttavia, per set di comandi di grandi dimensioni, è consigliabile usare solo il posizionamento dei comandi.
Aggiungere comportamenti specializzati
È possibile usare l'elemento CommandFlag per modificare il comportamento dei menu e dei comandi, ad esempio per modificarne l'aspetto e la visibilità. È anche possibile influire quando un comando è visibile usando l'elemento VisibilityConstraints o aggiungere tasti di scelta rapida usando l'elemento KeyBindings . Alcuni tipi di menu e comandi hanno già comportamenti specializzati incorporati.
Per aggiungere comportamenti specializzati
Per rendere visibile un elemento dell'interfaccia utente solo in determinati contesti dell'interfaccia utente, ad esempio quando viene caricata una soluzione, usare vincoli di visibilità.
Dopo l'elemento
Commands
aggiungere un elementoVisibilityConstraints
.Per ogni elemento dell'interfaccia utente da vincolare, aggiungere un elemento VisibilityItem .
Per ogni
VisibilityItem
elemento, impostare gliguid
attributi eid
sul menu, il gruppo o il comando e quindi impostare l'attributo sul contesto dell'interfacciacontext
utente desiderato, come definito nella UIContextGuids80 classe .
Per impostare la visibilità o la disponibilità di un elemento dell'interfaccia utente nel codice, usare uno o più dei flag di comando seguenti:
DefaultDisabled
DefaultInvisible
DynamicItemStart
DynamicVisibility
NoShowOnMenuController
NotInTBList
Per altre informazioni, vedere l'elemento CommandFlag .
Per modificare la modalità di visualizzazione di un elemento o modificarne l'aspetto in modo dinamico, usare uno o più dei flag di comando seguenti:
AlwaysCreate
CommandWellOnly
DefaultDocked
DontCache
DynamicItemStart
FixMenuController
IconAndText
Pict
StretchHorizontally
TextMenuUseButton
TextChanges
TextOnly
Per altre informazioni, vedere l'elemento CommandFlag .
Per modificare la modalità di reazione di un elemento quando riceve i comandi, usare uno o più dei flag di comando seguenti:
AllowParams
CaseSensitive
CommandWellOnly
FilterKeys
NoAutoComplete
NoButtonCustomize
NoKeyCustomize
NoToolbarClose
PostExec
RouteToDocs
TextIsAnchorCommand
Per altre informazioni, vedere l'elemento CommandFlag .
Per collegare un tasto di scelta rapida dipendente dal menu a un menu o a una voce di un menu, aggiungere un carattere e commerciale (&) nell'elemento
ButtonText
per il menu o la voce di menu. Il carattere che segue la e commerciale è il tasto di scelta rapida attivo quando il menu padre è aperto.Per collegare un tasto di scelta rapida indipendente dal menu a un comando, usare l'elemento KeyBindings . Per altre informazioni, vedere l'elemento KeyBinding .
Per localizzare il testo del menu, usare l'elemento
LocCanonicalName
. Per altre informazioni, vedere l'elemento Strings .Alcuni tipi di menu e pulsanti includono comportamenti specializzati. L'elenco seguente descrive alcuni tipi di menu e pulsanti specializzati. Per altri tipi, vedere le descrizioni degli
types
attributi negli elementi Menu, Button e Combo .Casella combinata: una casella combinata è un elenco a discesa che può essere usato su una barra degli strumenti. Per aggiungere caselle combinate all'interfaccia utente, creare un elemento Combos nell'elemento
Commands
. Aggiungere quindi all'elementoCombos
unCombo
elemento per ogni casella combinata da aggiungere.Combo
gli elementi hanno gli stessi attributi e elementi figlio degliButton
elementi e hannoDefaultWidth
anche attributi eidCommandList
. L'attributoDefaultWidth
imposta la larghezza in pixel e l'attributoidCommandList
punta a un ID comando utilizzato per popolare la casella combinata.Controller di menu: un controller di menu è un pulsante con una freccia accanto. Facendo clic sulla freccia si apre un elenco. Per aggiungere un controller di menu all'interfaccia utente, creare un
Menu
elemento e impostarnetype
l'attributo suMenuController
oMenuControllerLatched
, a seconda del comportamento desiderato. Per popolare un controller di menu, impostarlo come elemento padre di unGroup
elemento. Il controller di menu visualizzerà tutti gli elementi figlio del gruppo nell'elenco a discesa.