Compilador de colores de VSIX

La herramienta Compilador de colores de extensión de Visual Studio es una aplicación de consola que toma un archivo .xml que representa los colores de los temas existentes de Visual Studio y los cubre en un archivo .pkgdef para que esos colores se puedan usar en Visual Studio. Dado que es fácil comparar las diferencias entre archivos .xml, esta herramienta es útil para administrar colores personalizados en el control de código fuente. También se puede enlazar a entornos de compilación para que la salida de la compilación sea un archivo .pkgdef válido.

Esquema XML de tema

Un archivo .xml de tema completo tiene este aspecto:

<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

El <elemento Theme> define un tema completo. Un tema debe contener al menos un <elemento Category> . Los elementos de tema se definen de la siguiente manera:

<Theme Name="name" GUID="guid">
      <!-- one or more Category elements -->
</Theme>
Atributo Definición
Nombre [Obligatorio] Nombre del tema
GUID [Obligatorio] GUID del tema (debe coincidir con el formato guid)

Al crear colores personalizados para Visual Studio, esos colores deben definirse para los temas siguientes. Si no existen colores para un tema determinado, Visual Studio intenta cargar los colores que faltan desde el tema Light.

Nombre del tema GUID del tema
Claro {de3dbbcd-f642-433c-8353-8f1df4370aba}
Oscuro {1ded0138-47ce-435e-84ef-9ec1f439b749}
Azul {a4d6a176-b948-4b29-8c66-53c97a1ed7d0}
Contraste alto {a4d6a176-b948-4b29-8c66-53c97a1ed7d0}

Categoría

El <elemento Category> define una colección de colores en un tema. Los nombres de categoría proporcionan agrupaciones lógicas y deben definirse lo más estrechamente posible. Una categoría debe contener al menos un <elemento Color> . Los elementos category se definen de la siguiente manera:

<Category Name="name" GUID="guid">
      <!-- one or more Color elements -->
 </Category>
Atributo Definición
Nombre [Obligatorio] Nombre de la categoría
GUID [Obligatorio] GUID de la categoría (debe coincidir con el formato guid)

Color

El <elemento Color> define un color para un componente o estado de la interfaz de usuario. El esquema de nomenclatura preferido para un color es [tipo de interfaz de usuario] [Estado]. No use la palabra "color", ya que es redundante. Un color debe indicar claramente el tipo de elemento y las situaciones, o "estado", para los que se aplicará el color. Un color no debe estar vacío y debe contener uno o ambos de un <elemento Background> y <Foreground> . Los elementos de color se definen de la siguiente manera:

<Color Name="name">
        <Background /> <!-- zero or one Background element -->
        <Foreground /> <!-- zero or one Foreground element -->
 </Color>
Atributo Definición
Nombre [Obligatorio] Nombre del color

Fondo o primer plano

Los <elementos Background> y <Foreground> definen el valor y el tipo de un color para el fondo o primer plano de un elemento de interfaz de usuario. Estos elementos no tienen elementos secundarios.

<Background Type="type" Source="int" />
<Foreground Type="type" Source="int" />
Atributo Definición
Tipo [Obligatorio] Tipo del color. Puede tener uno de los valores siguientes:

CT_INVALID: el color no es válido o no está establecido.

CT_RAW: valor ARGB sin formato.

CT_COLORINDEX: NO USE.

CT_SYSCOLOR: color del sistema de Windows de SysColor.

CT_VSCOLOR: un color de Visual Studio de __VSSYSCOLOREX.

CT_AUTOMATIC: color automático.

CT_TRACK_FOREGROUND: NO USE.

CT_TRACK_BACKGROUND: NO USE.
Source [Obligatorio] Valor del color representado en hexadecimal

Todos los valores admitidos por la enumeración __VSCOLORTYPE son compatibles con el esquema en el atributo Type. Sin embargo, se recomienda usar solo CT_RAW y CT_SYSCOLOR.

Todos juntos

Este es un ejemplo sencillo de un archivo .xml de 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>

Uso de la herramienta

Sintaxis

Archivo PkgDef opcional vsixColorCompiler <Archivo><XML><>

Argumentos

Nombre del modificador Notas Obligatorio o opcional
Sin nombre (archivo.xml) Este es el primer parámetro sin nombre y es la ruta de acceso al archivo XML que se va a convertir. Obligatorio
Sin nombre (archivo .pkgdef) Este es el segundo parámetro sin nombre y es la ruta de acceso de salida del archivo .pkgdef generado.

Valor predeterminado: <Xml Filename.pkgdef>
Opcionales
/noLogo Al establecer esta marca, se detiene la impresión de la información de los productos y los derechos de autor. Opcionales
/? Imprimir información de ayuda. Opcionales
/help Imprimir información de ayuda. Opcionales

Ejemplos

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

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

Notas

  • Esta herramienta requiere que se instale la versión más reciente del entorno de ejecución de VC++.

  • Solo se admiten archivos únicos. No se admite la conversión masiva a través de rutas de acceso de carpeta.

  • La herramienta se puede encontrar en <VS Install Path>\VSSDK\VisualStudioIntegration\Tools\Bin\

Salida de ejemplo

El archivo .pkgdef generado por la herramienta será similar a las siguientes claves:

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