Condividi tramite


Anatomia di un pacchetto VSIX

Un pacchetto VSIX è un .vsix file che contiene una o più estensioni di Visual Studio, insieme ai metadati usati da Visual Studio per classificare e installare le estensioni. Tali metadati sono contenuti nel manifesto VSIX e nel file [Content_Types].xml . Un pacchetto VSIX può contenere anche uno o più file Extension.vsixlangpack per fornire testo di installazione localizzato e può contenere pacchetti VSIX aggiuntivi per installare le dipendenze.

Il formato del pacchetto VSIX segue lo standard Open Packaging Conventions (OPC). Il pacchetto contiene file binari e file di supporto, insieme a un file [Content_Types].xml e a un .vsix file manifesto. Un pacchetto VSIX può contenere l'output di più progetti o anche più pacchetti con manifesti specifici.

Nota

I nomi dei file inclusi nei pacchetti VSIX non devono includere spazi, né caratteri riservati negli URI (Uniform Resource Identifier), come definito in [RFC2396].

Manifesto VSIX

Il manifesto VSIX contiene informazioni sull'estensione da installare e segue lo schema VSIX. Per altre informazioni, vedere Informazioni di riferimento sullo schema di estensione VSIX 2.0.

Il manifesto VSIX deve essere denominato extension.vsixmanifest quando è incluso in un .vsix file.

Il contenuto

Un pacchetto VSIX può contenere modelli, elementi della casella degli strumenti, VSPackage o qualsiasi altro tipo di estensione supportato da Visual Studio.

Language Pack

Un pacchetto VSIX può contenere una volta o più file Extension.vsixlangpack per fornire testo localizzato durante l'installazione. Per altre informazioni, vedere Localizzazione di pacchetti VSIX.

Dipendenze e riferimenti

Un pacchetto VSIX può contenere altri pacchetti VSIX come riferimenti. Ognuno di questi altri pacchetti deve includere il proprio manifesto VSIX.

Se un utente tenta di installare un'estensione con dipendenze, il programma di installazione verifica che gli assembly necessari siano installati nel sistema utente. Se gli assembly necessari non vengono trovati, le estensioni e Aggiornamenti visualizzano un elenco degli assembly mancanti.

Se il manifesto dell'estensione include uno o più elementi Dependency, Extensions e Aggiornamenti confronta il manifesto di ogni riferimento alle estensioni installate nel sistema e installa l'estensione a cui si fa riferimento se non è già installata. Se viene installata una versione precedente di un'estensione di riferimento, la versione più recente lo sostituisce.

Se un progetto in una soluzione multiprogetto include un riferimento a un altro progetto nella stessa soluzione, il pacchetto VSIX include le dipendenze del progetto. È possibile eseguire l'override di questo comportamento selezionando il riferimento per il progetto interno e quindi, nella finestra Proprietà , impostando la proprietà Gruppi di output inclusi in VSIX su BuiltProjectOutputGroup.

Per includere DLL satellite da assembly a cui si fa riferimento nel pacchetto VSIX, aggiungere SatelliteDllsProjectOutputGroup alla proprietà Gruppi di output inclusi in VSIX .

Percorso di installazione

Durante l'installazione, estensioni e Aggiornamenti cerca il contenuto del pacchetto VSIX in una cartella in %LocalAppData%\Microsoft\VisualStudio\{version}\Extensions.

Per impostazione predefinita, l'installazione si applica solo all'utente corrente, perché %LocalAppData% è una directory specifica dell'utente. Tuttavia, se si imposta l'elemento AllUsers del manifesto su True, l'estensione verrà installata in ..\{VisualStudioInstallationFolder}\Common7\IDE\Extensions e sarà disponibile per tutti gli utenti del computer.

[Content_Types].xml

Il file [Content_Types].xml identifica i tipi di file nel file espanso .vsix . Visual Studio usa questo file durante l'installazione del pacchetto, ma non installa il file stesso. Per altre informazioni su questo file, vedere Struttura del file [Content_types].xml.

Un file [Content_Types].xml è richiesto dallo standard OPC (Open Packaging Conventions). Per altre informazioni su OPC, vedere OPC: un nuovo standard per la creazione di pacchetti dei dati.