Регистрация типа проекта

При создании нового типа проекта необходимо создать записи реестра, позволяющие 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, указанном ранее.