Condividi tramite


Compilatore di colori VSIX

Lo strumento Visual Studio Extension Color Compiler è un'applicazione console che accetta un file .xml che rappresenta i colori per i temi di Visual Studio esistenti e lo copre in un file con estensione pkgdef in modo che tali colori possano essere usati in Visual Studio. Poiché è facile confrontare le differenze tra i file .xml, questo strumento è utile per gestire i colori personalizzati nel controllo del codice sorgente. Può anche essere collegato in ambienti di compilazione in modo che l'output della compilazione sia un file con estensione pkgdef valido.

SCHEMA XML tema

Un file di .xml tema completo è simile al seguente:

<Themes>
      <!—one or Theme elements -->
      <Theme>
        <!-- one or more Category elements -->
        <Category>
          <!-- one or more Color elements -->
          <Color>
            <!-- zero or one Background element -->
            <Background />
            <!-- zero or one Foreground element -->
            <Foreground />
          </Color>
        </Category>
      </Theme>
</Themes>

Tema

L'elemento <Theme> definisce un intero tema. Un tema deve contenere almeno un <elemento Category> . Gli elementi del tema sono definiti come segue:

<Theme Name="name" GUID="guid">
      <!-- one or more Category elements -->
</Theme>
Attributo Definizione
Nome [Obbligatorio] Nome del tema
Identificatore Unico Globale (GUID) [Obbligatorio] GUID del tema (deve corrispondere alla formattazione GUID)

Quando si creano colori personalizzati per Visual Studio, questi colori devono essere definiti per i temi seguenti. Se non esistono colori per un tema specifico, Visual Studio tenta di caricare i colori mancanti dal tema Chiaro.

Nome tema GUID tema
Light {de3dbbcd-f642-433c-8353-8f1df4370aba}
Scuro {1ded0138-47ce-435e-84ef-9ec1f439b749}
Blue {a4d6a176-b948-4b29-8c66-53c97a1ed7d0}
Contrasto elevato {a4d6a176-b948-4b29-8c66-53c97a1ed7d0}
Nome tema GUID tema
Light {de3dbbcd-f642-433c-8353-8f1df4370aba}
Scuro {1ded0138-47ce-435e-84ef-9ec1f439b749}
Contrasto elevato {a4d6a176-b948-4b29-8c66-53c97a1ed7d0}

Categoria

L'elemento <Category> definisce una raccolta di colori in un tema. Una categoria deve contenere almeno un <elemento Color> . Gli elementi di categoria sono definiti come segue:

<Category Name="name" GUID="guid">
  <!-- one or more Color elements -->
</Category>
Attributo Definizione
Nome [Obbligatorio] Nome della categoria
Identificatore Unico Globale (GUID) [Obbligatorio] GUID della categoria (deve corrispondere alla formattazione GUID)

I nomi di categoria forniscono raggruppamenti logici e devono essere definiti il più piccolo possibile.

I nomi delle categorie :::moniker range>="vs-2026" forniscono raggruppamenti logici per i colori che possono essere usati per un ambito simile a livello generale. In Visual Studio 2026, il sistema di progettazione, inclusa la categorizzazione dei colori, è stato semplificato per semplificare l'applicazione coerente e gli aggiornamenti centralizzati. Ad esempio, un tema di Visual Studio 2026 include queste categorie: - Decorative I colori possono essere usati per distinguere oggetti come grafici e schede colorate. - Shell i colori vengono usati per controlli e superfici comuni simili a Windows :::moniker-end

Colore

L'elemento <Color> definisce un colore per un componente o uno stato dell'interfaccia utente. La combinazione di denominazione preferita per un colore è [tipo di interfaccia utente][Stato]. Non usare la parola "color", perché è ridondante. Un colore deve indicare chiaramente il tipo di elemento e le situazioni, o "stato", per cui verrà applicato il colore. Un colore non deve essere vuoto e deve contenere uno o entrambi gli <elementi Background> e <Foreground> . Gli elementi colore sono definiti come segue:

L'elemento <Color> definisce un colore per un tipo di elemento dell'interfaccia utente. La combinazione di denominazione preferita per un colore è [Type][Part][Level]: - Type è il ruolo principale svolto dal colore nell'interfaccia utente, ad esempio AccentBackgroundControl, , , Texte così viaPart, è un'applicazione più granulare, ad esempio Fill, Stroke. - Level descrive lo stato o il passaggio del colore in una rampa, ad esempio Default, Disabled, Primary, Secondarye così via. Non usare la parola "color", perché è ridondante. Concentrarsi sull'utilizzo previsto di alto livello anziché su una funzionalità specifica, in modo che il token di colore possa essere riutilizzabile per controlli e stati simili per una maggiore coerenza. Un colore deve indicare chiaramente il tipo di elemento e le situazioni, per cui verrà applicato il colore. Un colore non deve essere vuoto e deve contenere uno o entrambi gli <elementi Background> e <Foreground> . Gli elementi colore sono definiti come segue:

<Color Name="name">
  <Background /> <!-- zero or one Background element -->
  <Foreground /> <!-- zero or one Foreground element -->
</Color>
Attributo Definizione
Nome [Obbligatorio] Nome del colore

Sfondo e/o primo piano

Gli <elementi Background> e <Foreground> definiscono il valore e il tipo di un colore per lo sfondo o il primo piano di un elemento dell'interfaccia utente. Questi elementi non hanno elementi figlio.

<Background Type="type" Source="int" />
<Foreground Type="type" Source="int" />
Attributo Definizione
TIPO [Obbligatorio] Tipo del colore. Può essere uno dei seguenti:

CT_INVALID: Il colore non è valido o non è impostato.

CT_RAW: Valore ARGB non elaborato.

CT_COLORINDEX: NON USARE.

CT_SYSCOLOR: Colore di sistema di Windows da SysColor.

CT_VSCOLOR: Colore di Visual Studio da __VSSYSCOLOREX.

CT_AUTOMATIC: Colore automatico.

CT_TRACK_FOREGROUND: NON USARE.

CT_TRACK_BACKGROUND: NON USARE.
Fonte [Obbligatorio] Valore del colore rappresentato in esadecimale

Tutti i valori supportati dall'enumerazione __VSCOLORTYPE sono supportati dallo schema nell'attributo Type. È tuttavia consigliabile usare solo CT_RAW e CT_SYSCOLOR.

Tutti insieme

Questo è un semplice esempio di un file di .xml tema valido:

<Themes>
  <Theme Name="Light" GUID="{de3dbbcd-f642-433c-8353-8f1df4370aba}">
    <Category Name="MyCategory" GUID="{0A96238B-70CE-4479-9170-EECEAA3FCD58}">
      <Color Name="MyActiveBorder">
        <Background Type="CT_RAW" Source="FFCCCEDB" />
      </Color>
    </Category>
  </Theme>
</Themes>

Come usare lo strumento

Syntax

File XML<>vsixColorCompiler <PkgDef file><facoltativo Args>

Argomenti

Cambia nome Notes Obbligatorio o facoltativo
Senza nome ( file.xml) Si tratta del primo parametro senza nome ed è il percorso del file XML da convertire. Obbligatorio
Senza nome (file con estensione pkgdef) Questo è il secondo parametro senza nome ed è il percorso di output per il file con estensione pkgdef generato.

Impostazione predefinita: <XML Filename.pkgdef>
Opzionale
/noLogo L'impostazione di questo flag impedisce la stampa delle informazioni sul prodotto e sul copyright. Opzionale
/? Stampare le informazioni della Guida. Opzionale
/help Stampare le informazioni della Guida. Opzionale

Examples

  • VsixColorCompiler D:\xml\colors.xml D:\pkgdef\colors.pkgdef

  • VsixColorCompiler D:\xml\colors.xml /noLogo

Note

  • Questo strumento richiede l'installazione della versione più recente del runtime di Microsoft Visual C++.

  • Sono supportati solo singoli file. La conversione bulk tramite percorsi di cartella non è supportata.

  • Lo strumento è disponibile in <VS Install Path>\VSSDK\VisualStudioIntegration\Tools\Bin\

Output di esempio

Il file con estensione pkgdef generato dallo strumento sarà simile alle chiavi seguenti:

[$RootKey$\Themes\{de3dbbcd-f642-433c-8353-8f1df4370aba}\Environment]
"Data"=hex:3a,00,00,00,0b,00,00,00,01,00,00,00,c3,d9,4e,62,fd,bd,fa,41,96,c3,7c,82,4e,a3,2e,3d,01,00,00,00,0c,00,00,00,41,63,74,69,76,65,42,6f,72,64,65,72,01,cc,ce,db,ff,01,33,31,24,ff

[$RootKey$\Themes\{de3dbbcd-f642-433c-8353-8f1df4370aba}\TreeView]
"Data"=hex:38,00,00,00,0b,00,00,00,01,00,00,00,8e,f0,ec,92,13,8b,f4,4c,99,e9,ae,26,92,38,21,85,01,00,00,00,0a,00,00,00,42,61,63,6b,67,72,6f,75,6e,64,01,f5,f5,f5,ff,01,1e,1e,1e,ff

Aggiornare i temi per l'uso con Visual Studio 2026

È possibile aggiornare i temi esistenti che funzionano con Visual Studio 2022 o versioni precedenti per lavorare con Visual Studio 2026. Vedere Eseguire la migrazione dei temi a Visual Studio 2026.