Freigeben über


VSIX-Farbcompiler

Das Tool visual Studio Extension Color Compiler ist eine Konsolenanwendung, die eine XML-Datei verwendet, die Farben für vorhandene Visual Studio-Designs darstellt, und diese in eine PKGDEF-Datei verdeckt, sodass diese Farben in Visual Studio verwendet werden können. Da es einfach ist, Unterschiede zwischen XML-Dateien zu vergleichen, ist dieses Tool nützlich, um benutzerdefinierte Farben in der Quellcodeverwaltung zu verwalten. Sie kann auch in Buildumgebungen eingebunden werden, sodass die Ausgabe des Builds eine gültige PKGDEF-Datei ist.

Design-XML-Schema

Eine vollständige DESIGN-XML-Datei sieht wie folgt aus:

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

Thema

Das <Theme-Element> definiert ein gesamtes Design. Ein Design muss mindestens ein <Category-Element> enthalten. Designelemente werden wie folgt definiert:

<Theme Name="name" GUID="guid">
      <!-- one or more Category elements -->
</Theme>
Attribut Definition
Name [Erforderlich] Der Name des Designs
GUID [Erforderlich] Die GUID des Designs (muss mit der GUID-Formatierung übereinstimmen)

Beim Erstellen von benutzerdefinierten Farben für Visual Studio müssen diese Farben für die folgenden Designs definiert werden. Wenn für ein bestimmtes Design keine Farben vorhanden sind, versucht Visual Studio, die fehlenden Farben aus dem Hellen Design zu laden.

Designname Design-GUID
Hell {de3dbbcd-f642-433c-8353-8f1df4370aba}
Dunkel {1ded0138-47ce-435e-84ef-9ec1f439b749}
Blau {a4d6a176-b948-4b29-8c66-53c97a1ed7d0}
Hoher Kontrast {a4d6a176-b948-4b29-8c66-53c97a1ed7d0}

Kategorie

Das <Category-Element> definiert eine Auflistung von Farben in einem Design. Kategorienamen stellen logische Gruppierungen bereit und sollten so eng wie möglich definiert werden. Eine Kategorie muss mindestens ein <Color-Element> enthalten. Kategorieelemente werden wie folgt definiert:

<Category Name="name" GUID="guid">
      <!-- one or more Color elements -->
 </Category>
Attribut Definition
Name [Erforderlich] Der Name der Kategorie
GUID [Erforderlich] Die GUID der Kategorie (muss mit der GUID-Formatierung übereinstimmen)

Farbe

Das <Color-Element> definiert eine Farbe für eine Komponente oder einen Zustand der Benutzeroberfläche. Das bevorzugte Benennungsschema für eine Farbe lautet [UI-Typ] [Status]. Verwenden Sie nicht das Wort "Farbe", da es redundant ist. Eine Farbe sollte eindeutig den Elementtyp und die Situationen oder den Zustand angeben, für den die Farbe angewendet wird. Eine Farbe darf nicht leer sein und muss entweder ein oder beides eines <Hintergrund> - und <Vordergrundelements> enthalten. Farbelemente werden wie folgt definiert:

<Color Name="name">
        <Background /> <!-- zero or one Background element -->
        <Foreground /> <!-- zero or one Foreground element -->
 </Color>
Attribut Definition
Name [Erforderlich] Der Name der Farbe

Hintergrund und/oder Vordergrund

Die <Elemente "Hintergrund"> und <"Vordergrund> " definieren den Wert einer Farbe und den Typ für den Hintergrund oder den Vordergrund eines UI-Elements. Diese Elemente haben keine untergeordneten Elemente.

<Background Type="type" Source="int" />
<Foreground Type="type" Source="int" />
Attribut Definition
Typ [Erforderlich] Der Typ der Farbe. Folgende Werte sind möglich:

CT_INVALID: Die Farbe ist ungültig oder nicht festgelegt.

CT_RAW: Ein unformatierter ARGB-Wert.

CT_COLORINDEX: NICHT VERWENDEN.

CT_SYSCOLOR: Eine Windows-Systemfarbe von SysColor.

CT_VSCOLOR: Eine Visual Studio-Farbe aus __VSSYSCOLOREX.

CT_AUTOMATIC: Die automatische Farbe.

CT_TRACK_FOREGROUND: NICHT VERWENDEN.

CT_TRACK_BACKGROUND: NICHT VERWENDEN.
Quelle [Erforderlich] Der Wert der Farbe, die in hexadezimal dargestellt wird

Alle von der __VSCOLORTYPE Enumeration unterstützten Werte werden vom Schema im Type-Attribut unterstützt. Es wird jedoch empfohlen, nur CT_RAW und CT_SYSCOLOR zu verwenden.

Alle zusammen

Dies ist ein einfaches Beispiel für eine gültige Design-XML-Datei:

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

So verwenden Sie das Tool

Syntax

VsixColorCompiler <XML-Datei><PkgDef-Datei><Optional Args>

Argumente

Name wechseln Hinweise Erforderlich oder optional
Unbenannte (XML-Datei) Dies ist der erste unbenannte Parameter und der Pfad zur XML-Datei, die konvertiert werden soll. Erforderlich
Unbenannt (PKGDEF-Datei) Dies ist der zweite unbenannte Parameter und der Ausgabepfad für die generierte Pkgdef-Datei.

Standard: <XML Filename.pkgdef>
Optional
/noLogo Durch Festlegen dieser Kennzeichnung werden produkt- und copyrightinformationen nicht mehr gedruckt. Optional
/? Drucken Sie Hilfeinformationen aus. Optional
/help Drucken Sie Hilfeinformationen aus. Optional

Beispiele

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

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

Hinweise

  • Für dieses Tool muss die neueste Version der VC++-Laufzeit installiert werden.

  • Es werden nur einzelne Dateien unterstützt. Die Massenkonvertierung über Ordnerpfade wird nicht unterstützt.

  • Das Tool befindet sich in <VS Install Path>\VSSDK\VisualStudioIntegration\Tools\Bin\

Beispielausgabe

Die vom Tool generierte Pkgdef-Datei ähnelt den folgenden Schlüsseln:

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