다음을 통해 공유


VSIX 색 컴파일러

Visual Studio 확장 색 컴파일러 도구는 기존 Visual Studio 테마의 색을 나타내는 .xml 파일을 가져와 Visual Studio에서 해당 색을 사용할 수 있도록 .pkgdef 파일로 변환하는 콘솔 애플리케이션입니다. .xml 파일 간의 차이점을 간편하게 비교할 수 있으므로 이 도구는 소스 제어에서 사용자 지정 색을 관리하는 데 유용합니다. 빌드의 출력이 유효한 .pkgdef 파일이 되도록 빌드 환경에 연결할 수도 있습니다.

테마 XML 스키마

전체 테마 .xml 파일은 다음과 같습니다.

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

테마

<테마> 요소는 전체 테마를 정의합니다. 테마에는 <범주> 요소가 최소 하나 이상 포함되어야 합니다. 테마 요소는 다음과 같이 정의됩니다.

<Theme Name="name" GUID="guid">
      <!-- one or more Category elements -->
</Theme>
Attribute 정의
이름 [필수] 테마 이름
GUID [필수] 테마의 GUID(GUID 서식과 일치해야 함)

Visual Studio의 사용자 지정 색을 만들 때 다음 테마의 해당 색을 정의해야 합니다. 특정 테마의 색이 없으면 Visual Studio는 밝은 테마에서 누락된 색을 로드하려고 합니다.

테마 이름 테마 GUID
밝게 {de3dbbcd-f642-433c-8353-8f1df4370aba}
어둡게 {1ded0138-47ce-435e-84ef-9ec1f439b749}
파랑 {a4d6a176-b948-4b29-8c66-53c97a1ed7d0}
고대비 {a4d6a176-b948-4b29-8c66-53c97a1ed7d0}

범주

<범주> 요소는 테마의 색 컬렉션을 정의합니다. 범주 이름은 논리적 그룹화를 제공하며 가능한 한 좁게 정의되어야 합니다. 범주에는 <색> 요소가 최소 하나 이상 포함되어야 합니다. 범주 요소는 다음과 같이 정의됩니다.

<Category Name="name" GUID="guid">
      <!-- one or more Color elements -->
 </Category>
Attribute 정의
이름 [필수] 범주 이름
GUID [필수] 범주의 GUID(GUID 서식과 일치해야 함)

<색> 요소는 구성 요소나 UI 상태의 색을 정의합니다. 색의 기본 명명 체계는 [UI 형식] [상태]입니다. "color" 단어는 중복되므로 사용하지 마세요. 색은 요소 형식과 상황 또는 색이 적용될 "상태"를 명확하게 나타내야 합니다. 색은 비어 있으면 안 되며 <배경> 및 <전경> 요소 중 하나 또는 둘 다를 포함해야 합니다. 색 요소는 다음과 같이 정의됩니다.

<Color Name="name">
        <Background /> <!-- zero or one Background element -->
        <Foreground /> <!-- zero or one Foreground element -->
 </Color>
Attribute 정의
이름 [필수] 색 이름

배경 및/또는 전경

<배경> 및 <전경> 요소는 UI 요소의 배경 또는 전경에 대한 색의 값과 형식을 정의합니다. 이러한 요소에는 자식이 없습니다.

<Background Type="type" Source="int" />
<Foreground Type="type" Source="int" />
Attribute 정의
Type [필수] 속성 형식입니다. 다음 중 하나일 수 있습니다.

CT_INVALID: 색이 잘못되었거나 설정되지 않았습니다.

CT_RAW: 원시 ARGB 값입니다.

CT_COLORINDEX: 사용하지 마세요.

CT_SYSCOLOR: SysColor의 Windows 시스템 색입니다.

CT_VSCOLOR: __VSSYSCOLOREX의 Visual Studio 색입니다.

CT_AUTOMATIC: 자동 색입니다.

CT_TRACK_FOREGROUND: 사용하지 마세요.

CT_TRACK_BACKGROUND: 사용하지 마세요.
원본 [필수] 16진수로 표시되는 색의 값

__VSCOLORTYPE 열거형에서 지원하는 모든 값은 형식 특성의 스키마에서 지원됩니다. 그러나 CT_RAW 및 CT_SYSCOLOR만 사용하는 것이 좋습니다.

요약

다음은 유효한 테마 .xml 파일의 간단한 예제입니다.

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

이 도구를 사용 하는 방법

Syntax

VsixColorCompiler <XML 파일><PkgDef 파일><선택적 인수>

인수

스위치 이름 참고 필수 또는 선택
이름 없음(.xml 파일) 이름 없는 첫 번째 매개 변수이며 변환할 XML 파일의 경로입니다. Required
이름 없음(.pkgdef 파일) 두 번째 명명되지 않은 매개 변수이며 생성된 .pkgdef 파일의 출력 경로입니다.

기본값: <XML 파일 이름>.pkgdef
선택 사항
/noLogo 이 플래그를 설정하면 제품 및 저작권 정보가 인쇄되지 않습니다. 선택 사항
/? 도움말 정보를 출력합니다. 선택 사항
/help 도움말 정보를 출력합니다. 선택 사항

예제

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

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

주의

  • 이 도구를 사용하려면 최신 버전의 VC++ 런타임을 설치해야 합니다.

  • 단일 파일만 지원됩니다. 폴더 경로를 통한 대량 변환은 지원되지 않습니다.

  • <VS Install Path>\VSSDK\VisualStudioIntegration\Tools\Bin\에서 도구를 찾을 수 있습니다.

샘플 출력

도구에서 생성한 .pkgdef 파일은 다음 키와 유사합니다.

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