Freigeben über


VSIX-Farbcompiler

Das Visual Studio Extension Color Compiler-Tool 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

Ein vollständiges 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
Licht {de3dbbcd-f642-433c-8353-8f1df4370aba}
Dunkel {1ded0138-47ce-435e-84ef-9ec1f439b749}
Blau {a4d6a176-b948-4b29-8c66-53c97a1ed7d0}
Hoher Kontrast {a4d6a176-b948-4b29-8c66-53c97a1ed7d0}
Designname Design-GUID
Licht {de3dbbcd-f642-433c-8353-8f1df4370aba}
Dunkel {1ded0138-47ce-435e-84ef-9ec1f439b749}
Hoher Kontrast {a4d6a176-b948-4b29-8c66-53c97a1ed7d0}

Kategorie

Das <Category-Element> definiert eine Auflistung von Farben in einem Design. 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)

Kategorienamen stellen logische Gruppierungen bereit und sollten so eng wie möglich definiert werden.

:::moniker range>="vs-2026" Kategorienamen stellen logische Gruppierungen für Farben bereit, die für ähnliche Bereiche auf hoher Ebene verwendet werden können. In Visual Studio 2026 wurde das Designsystem, einschließlich der Farbkategorisierung, vereinfacht, um konsistente Anwendungs- und zentralisierte Updates zu vereinfachen. Ein Visual Studio 2026-Design weist beispielsweise folgende Kategorien auf: - Decorative Farben können verwendet werden, um Objekte wie Diagramme und farbige Registerkarten zu unterscheiden. - Shell Farben werden für allgemeine Steuerelemente und Oberflächen verwendet, die Windows :::moniker-end ähneln

Color

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:

Das <Color-Element> definiert eine Farbe für einen Benutzeroberflächenelementtyp. Das bevorzugte Benennungsschema für eine Farbe lautet [Type][Part][Level]: - Type ist die Rolle der obersten Ebene, die die Farbe in der Benutzeroberfläche spielt, z. B. ein Accent, Background, Control, , Textusw. - Part ist eine differenziertere Anwendung, z Fill. B. , Stroke. - Level beschreibt den Zustand oder schritt der Farbe in einer Rampe, z Default. B. , Disabled, Primary, Secondaryusw. Verwenden Sie nicht das Wort "Farbe", da es redundant ist. Konzentrieren Sie sich auf die allgemeine beabsichtigte Verwendung anstelle eines bestimmten Features, damit das Farbtoken für ähnliche Steuerelemente und Zustände wiederverwendbar sein kann, um eine bessere Konsistenz zu erzielen. Eine Farbe sollte eindeutig den Elementtyp und die Situationen angeben, für die 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. Dies kann eine der folgenden Aktionen sein:

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 ein gültiges 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>

Verwenden des Tools

Syntax

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

Argumente

Name wechseln Hinweise Erforderlich oder optional
Unbenannt (.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>
Wahlfrei
/noLogo Durch Festlegen dieser Kennzeichnung werden produkt- und copyrightinformationen nicht mehr gedruckt. Wahlfrei
/? Drucken Sie Hilfeinformationen aus. Wahlfrei
/help Drucken Sie Hilfeinformationen aus. Wahlfrei

Examples

  • 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 Microsoft Visual C++-Runtime 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

Aktualisieren von Designs für die Arbeit mit Visual Studio 2026

Sie können vorhandene Designs aktualisieren, die mit Visual Studio 2022 oder einer früheren Version arbeiten, um mit Visual Studio 2026 zu arbeiten. Siehe Migrieren von Designs zu Visual Studio 2026.