Файлы описания каталога шаблона (VSDIR-файлы)
Файл описания каталога шаблона (VSDIR) — это текстовый файл, позволяющий интегрированной среде разработки (IDE) отображать папки, файлы VSZ мастера и файлы шаблонов, связанные с проектом в диалоговых окнах. Содержимое содержит одну запись для каждого файла или папки. Все VSDIR-файлы в указанном расположении объединяются, хотя для описания нескольких папок, мастеров или файлов шаблонов обычно предоставляется только один VSDIR-файл.
Папки (вложенные каталоги), файлы, на которые ссылается VSDIR-файл, и сам VSDIR-файл находятся в одном каталоге. Когда интегрированная среда разработки запускает мастер или отображает папку или файл в диалоговом окне "Новый проект " или "Добавить новый элемент ", интегрированная среда разработки проверяет каталог, содержащий исполняемые файлы, чтобы определить, присутствует ли vsdir-файл. Если найден VSDIR-файл, интегрированная среда разработки считывает ее, чтобы определить, содержит ли она запись для выполненной или отображаемой папки или файла. Если запись найдена, интегрированная среда разработки использует сведения в выполнении мастера или отображения содержимого.
В следующем примере кода используется файл SourceFiles.vsdir в <разделе реестра EnvSDK>\BscPrj\BscPrj\BscPrjProjectItems\Source_Files реестра:
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-файл для каждого типа файла.
Поля
В следующей таблице перечислены поля, указанные для каждой записи.
Поле | Description |
---|---|
Имя относительного пути (RelPathName) | Имя папки, шаблона или VSZ-файла, например HeaderFile.h или MyWizard.vsz. Это поле также может быть именем, используемым для представления папки. |
{clsidPackage} | GUID VSPackage, который обеспечивает доступ к локализованным строкам, таким как LocalizedName, Description, IconResourceId и SuggestedBaseName, в ресурсах вспомогательной библиотеки динамических ссылок (DLL) VSPackage. IconResourceId применяется, если DLLPath не предоставлен. Примечание. Это поле является необязательным, если только одно или несколько предыдущих полей не является идентификатором ресурса. Обычно это поле пусто для VSDIR-файлов, соответствующих сторонним мастерам, которые не локализируют свой текст. |
Локализованное имя | Локализованное имя файла шаблона или мастера. Это поле может быть строкой или идентификатором ресурса формы "#ResID". Это имя отображается в диалоговом окне "Добавление нового элемента ". Примечание. Если LocalizedName является идентификатором ресурса, то требуется {clsidPackage}. |
SortPriority | Целое число, представляющее относительный приоритет этого файла шаблона или мастера. Например, если этот элемент имеет значение 1, этот элемент отображается рядом с другими элементами со значением 1 и впереди всех элементов со значением типа 2 или больше. Приоритет сортировки относительно элементов в одном каталоге. В одном каталоге может быть несколько VSDIR-файлов. В этом случае элементы из всех .vsdir-файлы в этом каталоге объединяются. Элементы с одинаковым приоритетом перечислены в нечувствительном лексографическом порядке регистра отображаемого имени. Функция _wcsicmp используется для упорядочивания элементов.Элементы, не описанные в VSDIR-файлах, включают номер приоритета больше, чем самый высокий номер приоритета, указанный в vsdir-файлах. Результатом является то, что эти элементы находятся в конце отображаемого списка независимо от их имени. |
Description | Локализованное описание файла шаблона или мастера. Это поле может быть строкой или идентификатором ресурса формы "#ResID". Эта строка отображается в диалоговом окне "Новый проект " или "Добавить новый элемент " при выборе элемента. |
DLLPath или {clsidPackage} | Используется для загрузки значка для файла шаблона или мастера. Значок загружается в виде ресурса из DLL-файла или EXE-файла с помощью IconResourceId. Этот DLL-файл или EXE-файл можно определить с помощью полного пути или с помощью GUID VSPackage. Библиотека DLL реализации VSPackage используется для загрузки значка (а не вспомогательной библиотеки DLL). |
IconResourceId | Идентификатор ресурса в библиотеке DLL или библиотеке DLL реализации VSPackage, которая определяет значок для отображения. |
Флаги (__VSDIRFLAGS) | Используется для отключения или включения полей "Имя " и "Расположение " в диалоговом окне "Добавление нового элемента ". Значение поля Flags является десятичным эквивалентом сочетания обязательных битовых флагов. Когда пользователь выбирает элемент на новой вкладке, проект определяет, отображается ли поле "Имя" и поле "Расположение" при первом отображении диалогового окна "Добавить новый элемент". Элемент с помощью VSDIR-файла может управлять только тем, включены ли поля и отключены при выборе элемента. |
SuggestedBaseName | Представляет имя файла, мастера или шаблона по умолчанию. Это поле является строкой или идентификатором ресурса формы "#ResID". Интегрированная среда разработки использует это значение для предоставления имени элемента по умолчанию. Это базовое значение добавляется целочисленным значением, чтобы сделать имя уникальным, например MyFile21.asp. В предыдущем списке описание, DLLPath, IconResourceId, Flags и SuggestedBaseNumber применяются только к файлам шаблона и мастера. Эти поля не применяются к папкам. Этот факт показан в коде в файле BscPrjProjectItems в <разделе реестра EnvSDK>\BscPrj\BscPrj\BscPrjProjectItems. Этот файл содержит три записи (по одному для каждой папки) с четырьмя полями для каждой записи: RelPathName, {clsidPackage}, LocalizedName и SortPriority. General|{E59935A1-6156-11d1-87A6-00A0C91E2A46}|#110|100 Source_Files|{E59935A1-6156-11d1-87A6-00A0C91E2A46}|#111|110 Env|{E59935A1-6156-11d1-87A6-00A0C91E2A46}|#112|120 |
При создании файла мастера следует также рассмотреть следующие проблемы.
Любое не обязательное поле, для которого нет значимых данных, должно содержать 0 (ноль) в качестве заполнителя.
Если локализованное имя не указано, имя относительного пути используется в файле мастера.
DLLPath переопределяет clsidPackage для расположения значка.
Если значок не определен, интегрированная среда разработки заменяет значок по умолчанию для файла с этим расширением.
Если не указано предлагаемое базовое имя, используется "Project".
При удалении VSZ-файлов, папок или файлов шаблонов необходимо также удалить связанные записи из VSDIR-файла.