Добавление элементов в диалоговое окно "Добавление нового элемента"
Процесс добавления элементов в диалоговое окно "Добавление нового элемента " начинается с разделов реестра. Как показано в следующих записях реестра, раздел AddItemTemplates содержит путь и имя каталога, в котором элементы, доступные в диалоговом окне "Добавление нового элемента ", помещаются.
Примечание.
В таблице сразу после сегмента кода содержатся дополнительные сведения о записи реестра.
Этот раздел находится в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\14.0Exp\Projects.
Первый GUID — CLSID для проектов этого типа; второй GUID указывает зарегистрированный тип проекта для шаблонов добавления элементов:
\{C061DB26-5833-11D2-96F5-000000000000}\AddItemTemplates\TemplatesDir\{ACEF4EB2-57CF-11D2-96F4-00000000000}\1
@ = #6
TemplatesDir = \<путь> установки пакета SDK Visual Studio\VSIntegration\<SomeFolder>\<SomePackage>\<SomeProject\<SomeProjectItems>>
SortPriority = dword:00000064
Имя. | Тип | Данные (из файла rgs ) | Description |
---|---|---|---|
@ (по умолчанию) | REG_SZ | #%IDS_ADDITEM_TEMPLATES_ENTRY% | Идентификатор ресурса для шаблонов добавления элементов . |
Val TemplatesDir | REG_SZ | %TEMPLATE_PATH%\<SomeProjectItems> | Путь к элементам проекта, отображаемым в диалоговом окне мастера добавления нового элемента . |
Val SortPriority | REG_DWORD | 100 (x64) | Определяет порядок сортировки в узле дерева файлов, отображаемых в диалоговом окне "Добавление нового элемента ". |
Примечание.
GuidS для типов проектов Visual C# и Visual Basic приведены следующим образом:
- Visual C#: {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- Visual Basic: {F184B08F-C81C-45F6-A57F-5ABD99991F28F}
Каталог, указанный для TemplatesDir, который равен %TEMPLATE_PATH%\<SomeProjectItems>, является узлом в левой части дерева диалогового окна "Добавить новый элемент". Дополнительные элементы в дереве основаны на подкаталоге в этом корневом каталоге. Файлы, доступные для добавления в проект, — это элементы в правой области диалогового окна "Добавить новый элемент ".
Как правило, эта папка будет содержать файлы шаблонов для проекта, такие как HTML-файл шаблона или CPP-файл, а также все VSZ-файлы для запуска мастеров. Чтобы управлять отображением элементов, можно также включить VSDIR-файлы для локализации имен и значков каталогов. Локализованная строка — это подпись, которая отображается в диалоговом окне, представляющего этот узел в дереве диалогового окна "Добавление нового элемента".
Однако вам не нужно иметь все в одном VSDIR-файле . Для каждого элемента в каталоге можно использовать один VSDIR-файл . Дополнительные сведения см. в разделе "Файл мастера (VSZ) и файлы каталога шаблонов (VSDIR).
Примечание.
Vsdir-файлы в каталогах шаблонов являются необязательными. Если вы просто хотите поместить элемент проекта в каталог и отобразить его в диалоговом окне "Добавление нового элемента ", можно поместить этот файл в каталог шаблонов, указанный в инструкции TemplatesDir . Затем файл будет отображаться в правой области диалогового окна "Добавить новый элемент " для этого проекта. Однако если вы хотите отобразить локализованную подпись для файла или значка, необходимо включить по крайней мере один VSDIR-файл в каталог шаблонов.
Элементы проекта группы
Если вы хотите содержать группы шаблонов в папках в дереве диалогового окна "Добавление нового элемента ", необходимо иметь подкаталоги в корневом каталоге шаблонов с элементами в них. При отображении диалогового окна "Добавить новый элемент " для пользователей они также увидят вложенные папки и смогут выбирать элементы проекта из них.
Приоритет сортировки в сегменте кода определяет, где этот каталог шаблона будет создан в дереве относительно других элементов узла дерева. В диалоговом окне "Добавление нового элемента" приоритет сортировки — это все, что необходимо включить, чтобы элементы отображались в правильном расположении в диалоговом окне.
Вы также можете реализовать IVsFilterAddProjectItemDlg2 интерфейс для фильтрации того, что отображается в диалоговом окне "Добавление нового элемента ". Реализуя этот интерфейс, можно настроить один каталог шаблонов на диске, который содержит, например, 50 шаблонов и файлов мастера. Таким образом, можно использовать разные типы проектов с 20 файлами, принадлежащими одному типу проекта, другим 30 файлам, принадлежащим другому типу проекта, и всем файлам, доступным в общем типе проекта. Таким образом, в зависимости от того, какой шаблон проекта создан, можно отобразить другой набор файлов шаблонов.
Например, в проекте Visual Basic могут быть веб-проекты и клиентские проекты. Веб-формы не являются полезными элементами для добавления в клиентский проект, а формы windows forms не являются полезными элементами для добавления в проект веб-сервера. Таким образом, можно создать один каталог шаблона, содержащий все файлы для обоих типов проекта. Затем, реализуя реализацию IVsFilterAddProjectItemDlg2, можно скрыть элементы, которые не должны отображаться на основе типа параметров проекта или проекта в проекте.
Фильтрация элементов проекта
IVsFilterAddProjectItemDlg2
обеспечивает фильтрацию элементов в дереве (левой области) и файлах проекта (справа на панели) следующим образом:
По локализованным именам (подпись, отображаемым в диалоговом окне, содержавшемся в VSDIR-файле), предоставленным
IVsFilterAddProjectItemDlg
.Фактические имена файлов и папок на диске (не локализованные — без VSDIR-файла ), предоставляемые
IVsFilterAddProjectItemDlg
.По категории, предоставленной
IVsFilterAddProjectItemDlg2
.Чтобы отфильтровать по категориям, укажите строку категории элементу в VSDIR-файле , например веб-форме или элементе клиента в Visual Basic. Затем код диалогового окна извлекает классификацию категорий из VSDIR-файла и передает его вам. Затем эту информацию можно передать в реализацию
IVsFilterAddProjectItemDlg2
, чтобы отфильтровать диалоговое окно "Добавить новый элемент " по категориям. Вы также можете фильтровать элементы для веб-страниц или в качестве клиентских вариантов приложений Win32. Кроме того, можно определить помеченные элементы Visual C++ как классы Microsoft Foundation (MFC) или активные элементы библиотеки шаблонов (ATL). При определении этих элементов система проекта может определять собственные классификации, чтобы система была отфильтровано на основе категорий и классификаций.Если вы реализуете эту функцию фильтра, вам не нужно сопоставлять таблицу каждого элемента, который должен быть скрыт. Вы можете просто классифицировать элементы в типы и поместить классификации в VSDIR-файл или файлы. Затем можно скрыть любой из элементов, имеющих определенную классификацию, реализуя интерфейс. Таким образом можно сделать элементы в диалоговом окне "Добавление нового элемента " динамическим на основе состояния проекта.