Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


Kompilator kolorów VSIX

Narzędzie kompilatora kolorów rozszerzenia programu Visual Studio to aplikacja konsolowa, która pobiera plik XML reprezentujący kolory istniejących motywów programu Visual Studio i ukrywa go w pliku pkgdef, aby można było używać tych kolorów w programie Visual Studio. Ponieważ łatwo jest porównać różnice między plikami XML, to narzędzie jest przydatne do zarządzania kolorami niestandardowymi w kontroli źródła. Można go również podłączyć do środowisk kompilacji, aby dane wyjściowe kompilacji był prawidłowym plikiem pkgdef.

Schemat XML motywu

Pełny plik XML motywu wygląda następująco:

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

Motyw

Element <Motyw> definiuje cały motyw. Motyw musi zawierać co najmniej jeden <element Kategoria> . Elementy motywu są zdefiniowane w następujący sposób:

<Theme Name="name" GUID="guid">
      <!-- one or more Category elements -->
</Theme>
Atrybut Definicja
Nazwisko [Wymagane] Nazwa motywu
Identyfikator GUID [Wymagane] Identyfikator GUID motywu (musi być zgodny z formatowaniem GUID)

Podczas tworzenia kolorów niestandardowych dla programu Visual Studio te kolory należy zdefiniować dla następujących motywów. Jeśli nie ma kolorów dla określonego motywu, program Visual Studio próbuje załadować brakujące kolory z motywu Light.

Nazwa motywu Identyfikator GUID motywu
Jasny {de3dbbcd-f642-433c-8353-8f1df4370aba}
Ciemny {1ded0138-47ce-435e-84ef-9ec1f439b749}
Niebieskie {a4d6a176-b948-4b29-8c66-53c97a1ed7d0}
Duży kontrast {a4d6a176-b948-4b29-8c66-53c97a1ed7d0}

Kategoria

Element <Category> definiuje kolekcję kolorów w motywie. Nazwy kategorii zapewniają grupowania logiczne i powinny być zdefiniowane tak wąsko, jak to możliwe. Kategoria musi zawierać co najmniej jeden <element Color> . Elementy kategorii są zdefiniowane w następujący sposób:

<Category Name="name" GUID="guid">
      <!-- one or more Color elements -->
 </Category>
Atrybut Definicja
Nazwisko [Wymagane] Nazwa kategorii
Identyfikator GUID [Wymagane] Identyfikator GUID kategorii (musi być zgodny z formatowaniem identyfikatora GUID)

Kolor

Element <Color> definiuje kolor składnika lub stanu interfejsu użytkownika. Preferowany schemat nazewnictwa dla koloru to [typ interfejsu użytkownika] [State]. Nie używaj słowa "kolor", ponieważ jest on nadmiarowy. Kolor powinien wyraźnie wskazywać typ elementu i sytuacje lub "stan", dla którego zostanie zastosowany kolor. Kolor nie może być pusty i musi zawierać jeden lub oba <elementy Tło> i <Pierwszy plan> . Elementy kolorów są zdefiniowane w następujący sposób:

<Color Name="name">
        <Background /> <!-- zero or one Background element -->
        <Foreground /> <!-- zero or one Foreground element -->
 </Color>
Atrybut Definicja
Nazwisko [Wymagane] Nazwa koloru

Tło i/lub Pierwszy plan

Elementy <Tło i <Pierwszy> plan> definiują wartość i typ koloru dla tła lub pierwszego planu elementu interfejsu użytkownika. Te elementy nie mają elementów podrzędnych.

<Background Type="type" Source="int" />
<Foreground Type="type" Source="int" />
Atrybut Definicja
Typ [Wymagane] Typ koloru. Może to być jedna z następujących opcji:

CT_INVALID: Kolor jest nieprawidłowy lub nie jest ustawiony.

CT_RAW: nieprzetworzona wartość ARGB.

CT_COLORINDEX: NIE UŻYWAJ.

CT_SYSCOLOR: Kolor systemu Windows z SysColor.

CT_VSCOLOR: kolor programu Visual Studio z __VSSYSCOLOREX.

CT_AUTOMATIC: kolor automatyczny.

CT_TRACK_FOREGROUND: NIE UŻYWAJ.

CT_TRACK_BACKGROUND: NIE UŻYWAJ.
Źródło [Wymagane] Wartość koloru reprezentowanego w szesnastkowym

Wszystkie wartości obsługiwane przez wyliczenie __VSCOLORTYPE są obsługiwane przez schemat w atrybucie Type. Zalecamy jednak używanie tylko CT_RAW i CT_SYSCOLOR.

Wszystkie razem

Jest to prosty przykład prawidłowego pliku XML motywu:

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

Jak korzystać z narzędzia

Składnia

VsixColorCompiler <plik>><<XML PkgDef opcjonalny Args>

Argumenty

Nazwa przełącznika Uwagi Wymagane lub opcjonalne
Bez nazwy (plik XML) Jest to pierwszy parametr bez nazwy i jest ścieżką do pliku XML do konwersji. Wymagania
Bez nazwy (plik pkgdef) Jest to drugi nienazwany parametr i jest ścieżką wyjściową wygenerowanego pliku pkgdef.

Ustawienie domyślne: <Nazwa pliku> XML.pkgdef
Opcjonalnie
/noLogo Ustawienie tej flagi uniemożliwia drukowanie informacji o produktach i prawach autorskich. Opcjonalnie
/? Wyświetl informacje pomocy. Opcjonalnie
/help Wyświetl informacje pomocy. Opcjonalnie

Przykłady

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

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

Uwagi

  • To narzędzie wymaga zainstalowania najnowszej wersji środowiska uruchomieniowego VC++.

  • Obsługiwane są tylko pojedyncze pliki. Konwersja zbiorcza za pośrednictwem ścieżek folderów nie jest obsługiwana.

  • Narzędzie można znaleźć w witrynie <VS Install Path>\VSSDK\VisualStudioIntegration\Tools\Bin\

Przykładowe dane wyjściowe

Plik pkgdef wygenerowany przez narzędzie będzie podobny do poniższych kluczy:

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