Регистрация типа проекта
При создании нового типа проекта необходимо создать записи реестра, позволяющие Visual Studio распознавать и работать с типом проекта. Обычно эти записи реестра создаются с помощью файла скрипта реестра (rgs).
В приведенном ниже примере инструкции из реестра предоставляют пути и данные по умолчанию, а затем таблицу, содержащую записи из скрипта реестра для каждой инструкции. Таблицы предоставляют записи скрипта и дополнительные сведения об инструкциях.
Примечание.
Следующие сведения о реестре предназначены для примера типа и целей записей в скриптах реестра, которые будут записываться для регистрации типа проекта. Фактические записи и их использование могут отличаться в зависимости от конкретных требований типа проекта. Вы должны просмотреть доступные примеры, чтобы найти тот, который тесно похож на тип проекта, который вы разрабатываете, а затем просмотрите скрипт реестра для этого примера.
Ниже приведены примеры HKEY_CLASSES_ROOT.
Пример 1
\.figp
@="FigPrjFile"
"Content Type"="text/plain"
\.figp\ShellNew
"NullFile"=""
\FigPrjFile
@="Figure Project File"
\DefaultIcon
@="<Visual Studio SDK installation path>\\9.0VSIntegration\\SomeFolder\\FigPkgs\\FigPrj\\Debug\\FigPrj.dll,-206"
\shell\open
@="&Open in Visual Studio"
\shell\open\command
@="devenv.exe \"%1\""
Имя. | Тип | Data | Description |
---|---|---|---|
@ |
REG_SZ | FigPrjFile |
Имя и описание файлов типа проекта с расширением FIGP. |
Content Type |
REG_SZ | Text/plain |
Тип контента для файлов проекта. |
NullFile |
REG_SZ | Null |
|
@ |
REG_SZ | %MODULE%,-206 |
Значок по умолчанию, используемый для проекта этого типа. Инструкция %MODULE% завершается в реестре в расположении по умолчанию библиотеки DLL типа проекта. |
@ |
REG_SZ | &Open in Visual Studio |
Приложение по умолчанию, в котором откроется этот тип проекта. |
@ |
REG_SZ | devenv.exe "%1" |
Команда по умолчанию, которая будет выполняться при открытии проекта этого типа. |
Ниже приведены примеры из HKEY_LOCAL_MACHINE и находятся в реестре в разделе [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\99.0Exp\Packages].
Пример 2
\{ACEF4EB2-57CF-11D2-96F4-000000000000} (The CLSID for the VSPackage)
@="FigPrj Project Package"
"InprocServer32"="9.0<Visual Studio SDK installation path>\\VSIntegration\\Archive\\FigPkgs\\FigPrj\\ Debug\\FigPrj.dll"
"CompanyName"="Microsoft"
"ProductName"="Figure Project Sample"
"ProductVersion"="9.0"
"MinEdition"="professional"
"ID"=dword:00000001
\{ACEF4EB2-57CF-11D2-96F4-000000000000}\SatelliteDLL
"DllName"="FigPrjUI.dll"
"Path"="9.0<Visual Studio SDK installation path>\\VSIntegration\\Archive\\FigPkgs\\FigPrj\\Debug\\"
\{ACEF4EB2-57CF-11D2-96F4-000000000000}\Automation
"FigProjects"=""
\{ACEF4EB2-57CF-11D2-96F4-000000000000}\AutomationEvents
"FigProjectsEvents"="Returns the FigProjectsEvents Object"
"FigProjectItemsEvents"="Returns the FigProjectItemsEvents Object"
Имя. | Тип | Data | Description |
---|---|---|---|
@ (по умолчанию) |
REG_SZ | FigPrj Project VSPackage |
Локализованное имя этого зарегистрированного VSPackage (тип проекта). |
InprocServer32 |
REG_SZ | %MODULE% |
Путь к библиотеке DLL типа проекта. Интегрированная среда разработки загружает эту библиотеку DLL и передает VSPackage CLSID, чтобы DllGetClassObject получить IClassFactory для создания IVsPackage объекта. |
CompanyName |
REG_SZ | Microsoft |
Имя компании, которая разработала тип проекта. |
ProductName |
REG_SZ | Figure Project Sample |
Имя типа проекта. |
ProductVersion |
REG_SZ | 9.0 |
Номер версии выпуска типа проекта. |
MinEdition |
REG_SZ | professional |
Выпуск зарегистрированного VSPackage. |
ID |
REG_DWORD | %IDS_PACKAGE_LOAD_KEY% |
Ключ загрузки пакета для проекта VSPackage. Ключ проверяется при загрузке проекта после запуска среды. |
DllName |
REG_SZ | %RESOURCE_DLL% |
Имя файла вспомогательной библиотеки DLL, содержащей локализованные ресурсы для типа проекта. |
Path |
REG_SZ | %RESOURCE_PATH% |
Путь к вспомогательной библиотеке DLL. |
FigProjectsEvents |
REG_SZ | См. инструкцию для значения. | Определяет текстовую строку, возвращенную для этого события автоматизации. |
FigProjectItemsEvents |
REG_SZ | См. инструкцию для значения. | Определяет текстовую строку, возвращенную для этого события автоматизации. |
Все приведенные ниже примеры находятся в реестре в разделе [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0Exp\Projects].
Пример 3
\{C061DB26-5833-11D2-96F5-000000000000} (The CLSID for projects of this type)
@="FigPrj Project"
"DisplayName"="#2"
"Package"="{ACEF4EB2-57CF-11D2-96F4-000000000000}"
"ProjectTemplatesDir"="C:\\Program Files\\VSIP 9.0\\EnvSDK\\FigPkgs\\ FigPrj\\FigPrjProjects"
"ItemTemplatesDir"="<Visual Studio SDK installation path>\\VSIntegration\\Archive9.0\\FigPkgs\\FigPrj\\ FigPrjProjectItems"
"DisplayProjectFileExtensions"="#3"
"PossibleProjectExtensions"="figp"
"DefaultProjectExtension"=".figp"
\{C061DB26-5833-11D2-96F5-000000000000}\Filters\1 (Folder 1 contains settings for Open Files filters.)
@="#4"
"CommonOpenFilesFilter"=dword:00000000
"CommonFindFilesFilter"=dword:00000000
"NotAddExistingItemFilter"=dword:00000000
"FindInFilesFilter"=dword:00000000
"NotOpenFileFilter"=dword:00000000
"SortPriority"=dword:000003e8
\{C061DB26-5833-11D2-96F5-000000000000}\Filters\2
(Folder 2 contains settings for Find in Files filters.)
@="#5"
"CommonOpenFilesFilter"=dword:00000000
"CommonFindFilesFilter"=dword:00000000
"NotAddExistingItemFilter"=dword:00000001
"FindInFilesFilter"=dword:00000001
"NotOpenFileFilter"=dword:00000000
"SortPriority"=dword:000003e8
\{C061DB26-5833-11D2-96F5-000000000000}\AddItemTemplates\TemplateDirs\ {ACEF4EB2-57CF-11D2-96F4-000000000000}\1 (Second GUID indicates the registered project type for the Add Items templates.)
@="#6"
"TemplatesDir"="<Visual Studio SDK installation path>\\VSIntegration\\Archive9.0\\FigPkgs\\FigPrj\\ FigPrjProjectItems"
"SortPriority"=dword:00000064
Имя. | Тип | Data | Description |
---|---|---|---|
@ |
REG_SZ | FigPrj Project |
Имя проектов этого типа по умолчанию. |
DisplayName |
REG_SZ | #%IDS_PROJECT_TYPE% |
Идентификатор ресурса имени, извлекаемого из вспомогательной библиотеки DLL, зарегистрированной в разделе "Пакеты". |
Package |
REG_SZ | %CLSID_Package% |
Идентификатор класса VSPackage, зарегистрированного в разделе "Пакеты". |
ProjectTemplatesDir |
REG_SZ | %TEMPLATE_PATH%\FigPrjProjects |
Путь к файлам шаблона проекта по умолчанию. Это файлы, отображаемые шаблоном нового проекта. |
ItemTemplatesDir |
REG_SZ | %TEMPLATE_PATH% \FigPrjProjectItems |
Путь по умолчанию к файлам шаблона элемента проекта. Это файлы, отображаемые шаблоном добавления нового элемента. |
DisplayProjectFileExtensions |
REG_SZ | #%IDS_DISPLAY_PROJ_FILE_EXT% |
Позволяет интегрированной среде разработки реализовать диалоговое окно "Открыть ". |
PossibleProjectExtensions |
REG_SZ | figp |
Используется IDE для определения того, обрабатывается ли открытый проект этим типом проекта (фабрика проектов). Формат для нескольких записей — это список с запятой. Например, vdproj; vdp". |
DefaultProjectExtension |
REG_SZ | .figp |
Используется интегрированной среды разработки в качестве расширения имени файла по умолчанию для операции "Сохранить как". |
Filter Settings |
REG_DWORD | Различные инструкции и комментарии в следующей таблице. | Эти параметры используются для задания различных фильтров для отображения файлов в диалоговых окнах пользовательского интерфейса. |
@ |
REG_SZ | #%IDS_ADDITEM_TEMPLATES_ENTRY% |
Идентификатор ресурса для шаблонов добавления элементов. |
TemplatesDir |
REG_SZ | %TEMPLATE_PATH%\FigPrjProjectItems |
Путь к элементам проекта, отображаемым в диалоговом окне для шаблона "Добавить новый элемент ". |
SortPriority |
REG_DWORD | 100 (vcprx64) |
Определяет порядок сортировки в узле дерева файлов, отображаемых в диалоговом окне "Добавление нового элемента ". |
В следующей таблице показаны параметры фильтров, доступные в предыдущем сегменте кода.
Параметр фильтра | Description |
---|---|
CommonFindFilesFilter |
Указывает, что фильтр является одним из распространенных фильтров в диалоговом окне "Поиск в файлах ". Общие фильтры перечислены в списке фильтров, прежде чем фильтры не помечены как распространенные. |
CommonOpenFilesFilter |
Указывает, что фильтр является одним из распространенных фильтров в диалоговом окне "Открыть файл ". Общие фильтры перечислены в списке фильтров, прежде чем фильтры не помечены как распространенные. |
FindInFilesFilter |
Указывает, что фильтр будет одним из фильтров в диалоговом окне "Поиск в файлах " и будет указан после общих фильтров. |
NotOpenFileFilter |
Указывает, что фильтр не будет использоваться в диалоговом окне "Открыть файл ". |
NotAddExistingItemFilter |
Указывает, что фильтр не будет использоваться в диалоговом окне "Добавление существующего элемента ". |
По умолчанию, если фильтр не имеет одного или нескольких этих флагов, фильтр используется в диалоговом окне "Добавление существующего элемента " и в диалоговом окне "Открыть файл " после перечисления общих фильтров. Фильтр не используется в диалоговом окне "Поиск в файлах ".
Все приведенные ниже примеры находятся в реестре в разделе [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0Exp\Projects].
Пример 4
{FE3BBBB6-72D5-11d2-9ACE-00C04F79A2A4} (The CLSID for Enterprise Projects)
\{FE3BBBB6-72D5-11d2-9ACE-00C04F79A2A4}\AddItemTemplates\TemplateDirs\ {ACEF4EB2-57CF-11D2-96F4-000000000000}\1 (CLSID for projects of this type)
@="#7"
"TemplatesDir"="<Visual Studio SDK installation path>\\VSIntegration\\Archive9.0\\FigPrj\\FigPrjProjects"
"SortPriority"=dword:00000029
"NewProjectDialogOnly"=dword:00000000
Имя. | Тип | Data | Description |
---|---|---|---|
@ |
REG_SZ | #%IDS_NEWPROJ_ TEMPLATES_ENTRY% |
Идентификатор ресурса для новых шаблонов проектов. |
TemplatesDir |
REG_SZ | %TEMPLATE_PATH%\FigPrjProjects |
Путь по умолчанию для проектов зарегистрированного типа проекта. |
SortPriority |
REG_DWORD | 41 (x29) |
Задает порядок сортировки проектов, отображаемых в диалоговом окне мастера создания проектов. |
NewProjectDialogOnly |
REG_DWORD | 0 |
0 указывает, что проекты этого типа отображаются только в диалоговом окне "Новый проект". |
Все приведенные ниже примеры находятся в реестре в разделе [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0Exp\Projects].
Пример 5
\{A2FE74E1-B743-11d0-AE1A-00A0C90FFFC3} (CLSID for Miscellaneous Files projects)
@="Miscellaneous Files Project"
\AddItemTemplates\TemplateDirs\{ACEF4EB2-57CF-11D2-96F4-000000000000}\1
(CLSID for Figures Project projects)
@="#6"
"TemplatesDir"="<Visual Studio SDK installation path>\\VSIntegration\\Archive9.0\\FigPkgs\\FigPrj\\ FigPrjProjectItems"
"SortPriority"=dword:00000064
Имя. | Тип | Data | Description |
---|---|---|---|
@ |
REG_SZ | нет | Значение по умолчанию, указывающее, что следующие записи предназначены для записей проектов "Прочие файлы". |
@ |
REG_SZ | #%IDS_ADDITEM_TEMPLATES_ENTRY% |
Значение идентификатора ресурса для файлов шаблонов "Добавить новые элементы". |
TemplatesDir |
REG_SZ | %TEMPLATE_PATH%\FigPrjProjectItems |
Путь по умолчанию к элементам, отображаемым в диалоговом окне "Добавление нового элемента ". |
SortPriority |
REG_DWORD | 100 (vcprx64) |
Устанавливает порядок сортировки для отображения в узле дерева диалогового окна "Добавление нового элемента ". |
Следующий пример находится в реестре в разделе [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0Exp\Menus].
Пример 6
"{ACEF4EB2-57CF-11D2-96F4-000000000000}"=",1000,1"
Запись меню указывает интегрированной среде разработки ресурс, используемый для получения сведений о меню. Когда эти данные были объединены в базу данных меню, тот же ключ будет добавлен в раздел MenusMerged реестра. VSPackage не должен изменять ничего в разделе MenusMerged напрямую. В поле "Данные" в следующей таблице есть три поля с разделим запятыми. Первое поле определяет полный путь к файлу ресурса меню:
Если первое поле опущено, ресурс меню загружается из вспомогательной библиотеки DLL, определяемой GUID VSPackage.
Второе поле определяет идентификатор ресурса меню типа CTMENU:
Если указан идентификатор ресурса, а путь к файлу предоставляется первым параметром, ресурс меню загружается из полного пути к файлу.
Если указан идентификатор ресурса, но путь к файлу отсутствует, ресурс меню загружается из вспомогательной библиотеки DLL.
Если указан полный путь к файлу и идентификатор ресурса опущен, то файл, который нужно загрузить, должен быть файлом CTO.
Последнее поле определяет номер версии ресурса CTMENU. Вы можете снова объединить меню, изменив номер версии.
Имя. | Тип | Data | Description |
---|---|---|---|
%CLSID_Package% | REG_SZ | ,1000,1 |
Ресурс для получения сведений о меню. |
Все приведенные ниже примеры находятся в реестре в разделе [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0Exp\NewProjectTemplates].
\TemplateDirs\{ACEF4EB2-57CF-11D2-96F4-000000000000}\1 (CLSID for Figures Project projects)
@="#7"
"TemplatesDir"="<Visual Studio SDK installation path>\\VSIntegration\\Archive9.0\\FigPkgs\\FigPrj\\FigPrjProjects"
"SortPriority"=dword:00000029
"NewProjectDialogOnly"=dword:00000000
Имя. | Тип | Data | Description |
---|---|---|---|
@ |
REG_SZ | #%IDS_NEWPROJ_TEMPLATES_ENTRY% |
Значение идентификатора ресурса для шаблонов проекта "Рис. Новый проект". |
TemplatesDir |
REG_SZ | %TEMPLATE_PATH%\FigPrjProjects |
Путь по умолчанию к каталогу New Projects. Элементы в этом каталоге будут отображаться в диалоговом окне мастера создания проекта. |
SortPriority |
REG_DWORD | 41 (x29) |
Устанавливает порядок отображения проектов в узле дерева диалогового окна "Новый проект ". |
NewProjectDialogOnly |
REG_DWORD | 0 |
0 указывает, что проекты этого типа отображаются только в диалоговом окне "Новый проект ". |
Следующий пример находится в реестре под разделом [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0Exp\InstalledProducts].
\FiguresProductSample
"Package"="{ACEF4EB2-57CF-11D2-96F4-000000000000}"
"UseInterface"=dword:00000001
Имя. | Тип | Data | Description |
---|---|---|---|
Package |
REG_SZ | %CLSID_Package% |
Идентификатор класса зарегистрированного VSPackage. |
UseInterface |
REG_DWORD | 1 |
1 указывает, что пользовательский интерфейс будет использоваться для взаимодействия с этим проектом. 0 указывает, что интерфейс пользовательского интерфейса отсутствует. |
Файлы VSZ, управляющие новыми типами проектов, часто содержат запись RELATIVE_PATH. Этот путь относительно пути, указанного в разделе \ProductDir записи типа проекта в следующем ключе установки:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.0Exp\Setup
Например, шаблоны проектов Enterprise Frameworks добавляют следующие записи реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.0Exp\Setup\EF\ProductDir = C:\Program Files\Microsoft Visual Studio\EnterpriseFrameworks\
Это означает, что если в VSZ-файле включена запись PROJECT_TYPE=EF, среда находит файлы VSZ в каталоге ProductDir, указанном ранее.