Compartilhar via


Compilador de cores do VSIX

A ferramenta Visual Studio Extension Color Compiler é um aplicativo de console que pega um arquivo .xml que representa cores para temas existentes do Visual Studio e o oculta para um arquivo .pkgdef para que essas cores possam ser usadas no Visual Studio. Como é fácil comparar diferenças entre arquivos .xml, essa ferramenta é útil para gerenciar cores personalizadas no controle do código-fonte. Ele também pode ser conectado a ambientes de compilação para que a saída da compilação seja um arquivo .pkgdef válido.

Esquema XML do tema

Um tema completo .xml arquivo tem esta aparência:

<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

O <elemento Theme> define um tema inteiro. Um tema deve conter pelo menos um <elemento Category> . Os elementos do tema são definidos assim:

<Theme Name="name" GUID="guid">
      <!-- one or more Category elements -->
</Theme>
Atributo Definição
Nome [obrigatório] O nome do tema
GUID [obrigatório] GUID do tema (deve corresponder à formatação GUID)

Ao criar cores personalizadas para o Visual Studio, essas cores precisam ser definidas para os temas a seguir. Se não existirem cores para um tema específico, o Visual Studio tentará carregar as cores ausentes do tema Luz.

Nome do tema GUID do tema
Claro {de3dbbcd-f642-433c-8353-8f1df4370aba}
Escuro {1ded0138-47ce-435e-84ef-9ec1f439b749}
Azul {A4D6A176-B948-4B29-8C66-53C97A1ED7D0}
Alto contraste {A4D6A176-B948-4B29-8C66-53C97A1ED7D0}

Categoria

O <elemento Category> define uma coleção de cores em um tema. Os nomes de categoria fornecem agrupamentos lógicos e devem ser definidos da forma mais restrita possível. Uma categoria deve conter pelo menos um <elemento Color> . Os elementos de categoria são definidos assim:

<Category Name="name" GUID="guid">
      <!-- one or more Color elements -->
 </Category>
Atributo Definição
Nome [obrigatório] O nome da categoria
GUID [obrigatório] O GUID da categoria (deve corresponder à formatação do GUID)

Cor

O <elemento Color> define uma cor para um componente ou estado da interface do usuário. O esquema de nomenclatura preferencial para uma cor é [tipo de interface do usuário] [Estado]. Não use a palavra "cor", pois ela é redundante. Uma cor deve indicar claramente o tipo de elemento e as situações, ou "estado", para as quais a cor será aplicada. Uma cor não deve estar vazia e deve conter um ou ambos os elementos Plano de <fundo> e <Primeiro plano> . Os elementos de cor são definidos assim:

<Color Name="name">
        <Background /> <!-- zero or one Background element -->
        <Foreground /> <!-- zero or one Foreground element -->
 </Color>
Atributo Definição
Nome [obrigatório] O nome da cor

Plano de fundo e/ou primeiro plano

Os <elementos Plano de Fundo e Primeiro Plano> definem o valor e <o tipo de uma cor para o plano de fundo ou o primeiro plano de> um elemento da interface do usuário. Esses elementos não têm filhos.

<Background Type="type" Source="int" />
<Foreground Type="type" Source="int" />
Atributo Definição
Tipo [obrigatório] O tipo da cor. Pode ser um dos seguintes:

CT_INVALID: A cor é inválida ou não está definida.

CT_RAW: Um valor ARGB bruto.

CT_COLORINDEX: NÃO USAR.

CT_SYSCOLOR: Uma cor de sistema Windows do SysColor.

CT_VSCOLOR: Uma cor do Visual Studio de __VSSYSCOLOREX.

CT_AUTOMATIC: A cor automática.

CT_TRACK_FOREGROUND: NÃO USE.

CT_TRACK_BACKGROUND: NÃO USAR.
Origem [obrigatório] O valor da cor representada em hexadecimal

Todos os valores suportados pela enumeração __VSCOLORTYPE são suportados pelo esquema no atributo Type. No entanto, recomendamos que você use apenas CT_RAW e CT_SYSCOLOR.

Todos juntos

Este é um exemplo simples de um arquivo de .xml tema válido:

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

Como usar a ferramenta

Sintaxe

Arquivo XML<>VsixColorCompiler <Arquivo PkgDef Args><opcional>

Argumentos

Nome do switch Observações Obrigatório ou Opcional
Sem nome (arquivo .xml) Este é o primeiro parâmetro sem nome e é o caminho para o arquivo XML a ser convertido. Obrigatório
Sem nome (arquivo .pkgdef) Este é o segundo parâmetro sem nome e é o caminho de saída para o arquivo .pkgdef gerado.

Padrão: <XML Filename.pkgdef>
Opcional
/noLogo A configuração desse sinalizador impede a impressão de informações sobre produtos e direitos autorais. Opcional
/? Imprima as informações da Ajuda. Opcional
/help Imprima as informações da Ajuda. Opcional

Exemplos

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

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

Observações

  • Essa ferramenta requer que a versão mais recente do tempo de execução VC++ esteja instalada.

  • Somente arquivos únicos são suportados. Não há suporte para conversão em massa por meio de caminhos de pasta.

  • A ferramenta pode ser encontrada em <VS Install Path>\VSSDK\VisualStudioIntegration\Tools\Bin\

Saída de exemplo

O arquivo .pkgdef gerado pela ferramenta será semelhante às chaves abaixo:

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