Partage via


Compilateur de couleur VSIX

L’outil Compilateur de couleurs d’extension Visual Studio est une application console qui prend un fichier .xml représentant des couleurs pour les thèmes Visual Studio existants et les couvre dans un fichier .pkgdef afin que ces couleurs puissent être utilisées dans Visual Studio. Étant donné qu’il est facile de comparer les différences entre les fichiers .xml, cet outil est utile pour gérer les couleurs personnalisées dans le contrôle de code source. Il peut également être connecté à des environnements de build afin que la sortie de la build soit un fichier .pkgdef valide.

Schéma XML de thème

Un fichier .xml de thème complet ressemble à ceci :

<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>

Thème

L’élément <Theme> définit un thème entier. Un thème doit contenir au moins un <élément Category> . Les éléments de thème sont définis comme suit :

<Theme Name="name" GUID="guid">
      <!-- one or more Category elements -->
</Theme>
Attribut Definition
Nom [Obligatoire] Nom du thème
GUID [Obligatoire] GUID du thème (doit correspondre à la mise en forme guid)

Lors de la création de couleurs personnalisées pour Visual Studio, ces couleurs doivent être définies pour les thèmes suivants. Si aucune couleur n’existe pour un thème particulier, Visual Studio tente de charger les couleurs manquantes du thème Clair.

Nom du thème GUID de thème
Clair {de3dbbcd-f642-433c-8353-8f1df4370aba}
Foncé {1ded0138-47ce-435e-84ef-9ec1f439b749}
Bleu {a4d6a176-b948-4b29-8c66-53c97a1ed7d0}
Contraste élevé {a4d6a176-b948-4b29-8c66-53c97a1ed7d0}

Catégorie

L’élément <Category> définit une collection de couleurs dans un thème. Les noms de catégorie fournissent des regroupements logiques et doivent être définis aussi étroitement que possible. Une catégorie doit contenir au moins un <élément Color> . Les éléments de catégorie sont définis comme suit :

<Category Name="name" GUID="guid">
      <!-- one or more Color elements -->
 </Category>
Attribut Definition
Nom [Obligatoire] Nom de la catégorie
GUID [Obligatoire] GUID de la catégorie (doit correspondre à la mise en forme du GUID)

Couleur

L’élément <Color> définit une couleur pour un composant ou un état de l’interface utilisateur. Le schéma d’affectation de noms préféré pour une couleur est [type d’interface utilisateur] [État]. N’utilisez pas le mot « couleur », car il est redondant. Une couleur doit indiquer clairement le type d’élément et les situations, ou « state », pour lesquelles la couleur sera appliquée. Une couleur ne doit pas être vide et doit contenir un <ou les deux éléments Background> et <Foreground> . Les éléments de couleur sont définis comme suit :

<Color Name="name">
        <Background /> <!-- zero or one Background element -->
        <Foreground /> <!-- zero or one Foreground element -->
 </Color>
Attribut Definition
Nom [Obligatoire] Nom de la couleur

Arrière-plan et/ou premier plan

Les <éléments Background> et <Foreground> définissent la valeur et le type d’une couleur pour l’arrière-plan ou le premier plan d’un élément d’interface utilisateur. Ces éléments n’ont pas d’enfants.

<Background Type="type" Source="int" />
<Foreground Type="type" Source="int" />
Attribut Definition
Type [Obligatoire] Type de la couleur. Les valeurs possibles sont les suivantes :

CT_INVALID : la couleur n’est pas valide ou n’est pas définie.

CT_RAW : valeur ARVB brute.

CT_COLORINDEX : NE PAS UTILISER.

CT_SYSCOLOR : couleur système Windows de SysColor.

CT_VSCOLOR : couleur Visual Studio de __VSSYSCOLOREX.

CT_AUTOMATIC : couleur automatique.

CT_TRACK_FOREGROUND : NE PAS UTILISER.

CT_TRACK_BACKGROUND : NE PAS UTILISER.
Source [Obligatoire] Valeur de la couleur représentée en hexadécimal

Toutes les valeurs prises en charge par l’énumération __VSCOLORTYPE sont prises en charge par le schéma dans l’attribut Type. Toutefois, nous vous recommandons d’utiliser uniquement CT_RAW et CT_SYSCOLOR.

Tous ensemble

Il s’agit d’un exemple simple d’un fichier .xml de thème valide :

<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>

Comment utiliser l’outil ?

Syntaxe

Fichier XML><VsixColorCompiler <PkgDef file><Optional Args>

Arguments

Nom du commutateur Notes Obligatoire ou facultatif
Unnamed (fichier.xml) Il s’agit du premier paramètre sans nom et est le chemin d’accès au fichier XML à convertir. Requis
Unnamed (fichier.pkgdef) Il s’agit du deuxième paramètre sans nom et est le chemin de sortie du fichier .pkgdef généré.

Valeur par défaut : <XML Filename.pkgdef>
Facultatif
/noLogo La définition de cet indicateur empêche l’impression des informations sur le produit et les droits d’auteur. Facultatif
/? Imprimez les informations d’aide. Facultatif
/help Imprimez les informations d’aide. Facultatif

Exemples

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

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

Notes

  • Cet outil nécessite que la dernière version du runtime VC++ soit installée.

  • Seuls les fichiers uniques sont pris en charge. La conversion en bloc via les chemins d’accès aux dossiers n’est pas prise en charge.

  • L’outil se trouve dans <VS Install Path>\VSSDK\VisualStudioIntegration\Tools\Bin\

Exemple de sortie

Le fichier .pkgdef généré par l’outil est similaire aux clés ci-dessous :

[$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