模板目录说明 (.Vsdir) 文件

模板目录描述文件 (.vsdir) 是一个文本文件,它使集成开发环境(IDE)能够显示对话框中与项目关联的文件夹、向导 .vsz 文件和模板文件。 内容包括每个文件或文件夹一条记录。 引用位置中的所有 .vsdir 文件都合并,尽管通常只提供一个 .vsdir 文件来描述多个文件夹、向导或模板文件。

.vsdir 文件中引用的文件夹(子目录)和 .vsdir 文件本身都位于同一目录中。 当 IDE 运行向导或在“新建项目”或“添加新项”对话框中显示文件夹或文件时,IDE 将检查包含已执行文件的目录,以确定是否存在 .vsdir 文件。 如果找到 .vsdir 文件,IDE 将读取该文件以确定它是否包含所执行或显示的文件夹或文件的条目。 如果找到条目,IDE 将使用执行向导或显示内容的信息。

下面的代码示例来自 EnvSDK>\BscPrj\BscPrj\BscPrjProjectItems\Source_Files 注册表项中的 <SourceFiles.vsdir:

HeaderFile.h|{E59935A1-6156-11d1-87A6-00A0C91E2A46}|#125|130|#126|0|0|0|#127
SourceFile.cpp|{E59935A1-6156-11d1-87A6-00A0C91E2A46}|#122|110|#123|0|0|0|#124

在这种情况下,两条记录位于一个文件中。 一个新行(回车符)分隔每个记录。 每行表示不同的文件类型。 管道 (|) 字符分隔每个记录中的字段。 单个目录可以包含多个具有不同文件名的 .vsdir 文件,也可以为每个文件类型创建一个 .vsdir 文件。

字段

下表列出了为每个记录指定的字段。

字段 说明
相对路径名称 (RelPathName) 文件夹、模板或 .vsz 文件的名称,例如 HeaderFile.h 或 MyWizard.vsz。 此字段也可以是用于表示文件夹的名称。
{clsidPackage} VSPackage 的 GUID,可用于访问 VSPackage 附属动态链接库 (DLL) 资源中的本地化字符串,例如 LocalizedName、Description、IconResourceId 和 SuggestedBaseName。 如果未提供 DLLPath,则 IconResourceId 适用。 注意: 除非前一个或多个字段是资源标识符,否则此字段是可选的。 对于与不本地化其文本的第三方向导相对应的 .vsdir 文件,此字段通常为空。
LocalizedName 模板文件或向导的本地化名称。 此字段可以是“#ResID”形式的字符串或资源标识符。 此名称显示在 “添加新项 ”对话框中。 注意: 如果 LocalizedName 是资源标识符,则需要 {clsidPackage}。
SortPriority 一个整数,表示此模板文件或向导的相对优先级。 例如,如果此项的值为 1,则此项目显示在其他项旁边,值为 1 且大于排序值为 2 或更大的所有项。

排序优先级相对于同一目录中的项。 同一目录中可能有多个 .vsdir 文件。 在这种情况下,来自所有 项的项。合并该目录中的 vsdir 文件。 具有相同优先级的项目按显示名称的不区分大小写的词典顺序列出。 该 _wcsicmp 函数用于对项进行排序。

.vsdir 文件中未描述的项包括大于 .vsdir 文件中列出的最高优先级数的优先级数字。 结果是,这些项位于所显示列表的末尾,而不考虑其名称。
说明 模板文件或向导的本地化说明。 此字段可以是“#ResID”形式的字符串或资源标识符。 选中该项后,此字符串将显示在 “新建项目 ”或 “添加新项 ”对话框中。
DLLPath 或 {clsidPackage} 用于加载模板文件或向导的图标。 该图标使用 IconResourceId 作为 .dll 或 .exe 文件中的资源加载。 可以使用完整路径或使用 VSPackage 的 GUID 来标识此 .dll 或 .exe 文件。 VSPackage 的实现 DLL 用于加载图标(而不是附属 DLL)。
IconResourceId DLL 或 VSPackage 实现 DLL 中的资源标识符,用于确定要显示的图标。
标志 (__VSDIRFLAGS 用于在“添加新项”对话框中禁用或启用“名称和位置”字段 Flags 字段的值是所需位标志组合的十进制等效项。

当用户选择“新建”选项卡上的某个项时,项目将确定首次显示“添加新项”对话框时是否显示“名称”字段和“位置”字段。 通过 .vsdir 文件,项只能控制是否在选中项目时启用字段还是禁用字段。
SuggestedBaseName 表示文件、向导或模板的默认名称。 此字段是“#ResID”形式的字符串或资源标识符。 IDE 使用此值为项提供默认名称。 此基值追加了一个整数值,以使名称唯一,例如 MyFile21.asp。

在前面的列表中,Description、DLLPath、IconResourceId、Flags 和 SuggestedBaseNumber 仅适用于模板和向导文件。 这些字段不适用于文件夹。 此事实在 EnvSDK>\BscPrjPrj\BscPrj\BscPrj\BscPrj\BscPrjProjectItems 注册表项的 <BscPrjProjectItems 文件中的代码中进行了说明。 此文件包含三条记录(每个文件夹一条),每个记录有四个字段:RelPathName、{clsidPackage}、LocalizedName 和 SortPriority。

General&#124;{E59935A1-6156-11d1-87A6-00A0C91E2A46}&#124;#110&#124;100

Source_Files&#124;{E59935A1-6156-11d1-87A6-00A0C91E2A46}&#124;#111&#124;110

Env&#124;{E59935A1-6156-11d1-87A6-00A0C91E2A46}&#124;#112&#124;120

创建向导文件时,还应考虑以下问题。

  • 任何没有有意义的数据的非必需字段都应包含 0(零)作为占位符。

  • 如果未提供本地化名称,则向导文件中将使用相对路径名称。

  • DLLPath 替代图标位置的 clsidPackage。

  • 如果未定义图标,IDE 会将默认图标替换为具有该扩展名的文件。

  • 如果未提供建议的基名称,则使用“Project”。

  • 如果删除 .vsz 文件、文件夹或模板文件,则还必须从 .vsdir 文件中删除其关联的记录。