Visual Studio 扩展颜色编译器工具是一个控制台应用程序,它采用一个表示现有 Visual Studio 主题颜色的 .xml 文件,并将其覆盖到 .pkgdef 文件中,以便可以在 Visual Studio 中使用这些颜色。 由于比较 .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> 元素定义整个主题。 主题必须至少包含一个 <Category> 元素。 主题元素的定义如下所示:
<Theme Name="name" GUID="guid">
<!-- one or more Category elements -->
</Theme>
| 属性 | 定义 |
|---|---|
| Name | [必需]主题的名称 |
| GUID | [必需]主题的 GUID (必须与 GUID 格式匹配) |
为 Visual Studio 创建自定义颜色时,需要为以下主题定义这些颜色。 如果特定主题不存在颜色,Visual Studio 将尝试从浅色主题加载缺失的颜色。
| 主题名称 | 主题 GUID |
|---|---|
| Light | {de3dbbcd-f642-433c-8353-8f1df4370aba} |
| 暗 | {1ded0138-47ce-435e-84ef-9ec1f439b749} |
| Blue | {a4d6a176-b948-4b29-8c66-53c97a1ed7d0} |
| 高对比度 | {a4d6a176-b948-4b29-8c66-53c97a1ed7d0} |
| 主题名称 | 主题 GUID |
|---|---|
| Light | {de3dbbcd-f642-433c-8353-8f1df4370aba} |
| 暗 | {1ded0138-47ce-435e-84ef-9ec1f439b749} |
| 高对比度 | {a4d6a176-b948-4b29-8c66-53c97a1ed7d0} |
类别
<Category> 元素定义主题中的颜色集合。 类别必须至少包含一个 <Color> 元素。 类别元素的定义如下所示:
<Category Name="name" GUID="guid">
<!-- one or more Color elements -->
</Category>
| 属性 | 定义 |
|---|---|
| Name | [必需]类别的名称 |
| GUID | [必需]类别的 GUID (必须与 GUID 格式匹配) |
类别名称提供逻辑分组,应尽可能窄地定义。
:::moniker range>=“vs-2026”类别名称为可用于高级别类似范围的颜色提供逻辑分组。 在 Visual Studio 2026 中,设计系统(包括颜色分类)已简化,以促进一致的应用程序和集中更新。 例如,Visual Studio 2026 主题具有以下类别:- Decorative 颜色可用于区分图表和彩色选项卡等对象。
-
Shell 颜色用于类似于 Windows :::moniker-end 的常见控件和图面
颜色
<Color> 元素定义组件或 UI 状态的颜色。 颜色的首选命名方案是 [UI 类型][State]。 不要使用“color”一词,因为它是冗余的。 颜色应清楚地指示将应用颜色的元素类型和情况或“状态”。 颜色不得为空,并且必须包含 Background< 和 Foreground> 元素的一个或两者<>。 颜色元素的定义如下所示:
<Color> 元素定义 UI 元素类型的颜色。 颜色的首选命名方案是 [Type][Part][Level]:- Level描述渐变中颜色的状态或步骤,例如Default、Disabled、PrimarySecondary等。不要使用“color”一词,因为它是冗余的。 专注于高级预期用途,而不是特定功能,以便颜色标记可以重复使用,以便用于类似的控件和状态,以便更好地保持一致性。 颜色应清楚地指示元素类型和应用颜色的情况。 颜色不得为空,并且必须包含 Background< 和 Foreground> 元素的一个或两者<>。 颜色元素的定义如下所示:
<Color Name="name">
<Background /> <!-- zero or one Background element -->
<Foreground /> <!-- zero or one Foreground element -->
</Color>
| 属性 | 定义 |
|---|---|
| Name | [必需]颜色的名称 |
背景和/或前景
<Background> 和 <Foreground> 元素为 UI 元素的背景或前景定义颜色的值和类型。 这些元素没有子元素。
<Background Type="type" Source="int" />
<Foreground Type="type" Source="int" />
| 属性 | 定义 |
|---|---|
| 类型 | [必需]颜色的类型。 它可以是下列项之一: CT_INVALID: 颜色无效或未设置。 CT_RAW: 原始 ARGB 值。 CT_COLORINDEX: 请勿使用。 CT_SYSCOLOR: SysColor 中的 Windows 系统颜色。 CT_VSCOLOR: 来自__VSSYSCOLOREX的 Visual Studio 颜色。 CT_AUTOMATIC: 自动颜色。 CT_TRACK_FOREGROUND: 请勿使用。 CT_TRACK_BACKGROUND: 请勿使用。 |
| 来源 | [必需]以十六进制形式表示的颜色的值 |
类型属性中的架构支持__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>
如何使用该工具
语法
VsixColorCompiler <XML 文件><PkgDef 文件><可选 Args>
参数
| 开关名称 | 备注 | 必需或可选 |
|---|---|---|
| 未命名(.xml 文件) | 这是第一个未命名的参数,是要转换的 XML 文件的路径。 | 必选 |
| 未命名 (.pkgdef 文件) | 这是第二个未命名参数,是生成的 .pkgdef 文件的输出路径。 默认值:<XML Filename.pkgdef> |
可选 |
| /noLogo | 设置此标志会停止打印产品和版权信息。 | 可选 |
| /? | 打印出帮助信息。 | 可选 |
| /帮助 | 打印出帮助信息。 | 可选 |
Examples
VsixColorCompiler D:\xml\colors.xml D:\pkgdef\colors.pkgdef
VsixColorCompiler D:\xml\colors.xml /noLogo
注释
此工具要求安装最新版本的 Microsoft Visual C++ Runtime。
仅支持单个文件。 不支持通过文件夹路径进行批量转换。
可以在
中找到该工具
示例输出
该工具生成的 .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
更新主题以使用 Visual Studio 2026
可以更新使用 Visual Studio 2022 或更早版本的现有主题,以使用 Visual Studio 2026。 请参阅 将主题迁移到 Visual Studio 2026。