Создание нового проекта: В клобуком элемента, соответствует
Всегда подумал о том, как создать собственный тип проекта? Интересуйте, что фактически происходит при создании нового проекта? Let - нам принимать считывать под клобук и увидеть, что на самом деле поступает on.
Несколько задач координаты того, Visual Studio автоматически:
Он показывает дерево всех доступных типов проектов.
Отображает список шаблонов приложения для каждого типа проекта и позволяет выбрать одно из значений.
Он собирает данные проекта для приложения, например имя и путь проекта.
Оно передает эти сведения в рабочей среде проекта.
Он создает элементы проектов и папок в текущем решении.
Диалоговое окно " создание проекта "
Все начинается при выборе типа проекта для нового проекта. Let - нам запустить, щелкнув Создать проект в меню Файл. Диалоговое окно Создать проект, смотрящ примерно так:
Let - нам взглянуть больше внимания. Дерево Типы проектов список различных типов проектов, которые можно создать. При выборе типа проекта как Windows на Visual C# можно будет видеть список шаблонов приложения для начала работы. Установленные шаблоны Visual Studio устанавливается Visual Studio и доступны любому пользователю компьютера. Новые шаблоны, созданные собирать можно добавить в Мои шаблоны и доступны только к пользователю.
При выборе шаблона как Приложение Windows, описание типа приложения отображается в диалоговом окне; в этом случае Проект для создания приложений с пользовательским интерфейсом Windows.
В нижней части диалогового окна Создать проект, вы увидите несколько элементов управления, собирающие дополнительные сведения. Элементы управления отображаются зависящие от типа проекта, однако в целом они включают текстовое поле Имя проектов текстовое поле Расположение и связанная Обзор флажок кнопки и текстового поля Имя решения и связанных Создать каталог для решения.
Заполнение диалоговое окно " создание проекта "
, Где диалоговое окно Создать проект возвращает его данные? 2 Механизма на рабочем здесь один из них нерекомендуемых. Диалоговое окно Создать проект объединяет и отображает сведения, полученным из двух механизмов.
Более старая (нерекомендуемый) метод использует записи системного реестра и файлы .vsdir. Этот механизм работает, когда Visual Studio открыло. Более новый метод использует файлы vstemplate. Этот механизм работает при инициализации Visual Studio, например, путем запуска
devenv /setup
или
devenv /installvstemplates
Типы проектов
Позиция и имена корневых узлов Типы проектов, как Visual C# и Другие языки, определенных записей системного реестра. Организация дочерних узлов, например База данных и Смарт-устройство, отражает иерархию папок, которые содержат соответствующие файлы vstemplate. Let - нам выглядеть корневые узлы в первую очередь.
Корневые узлы типа проекта
При Visual Studio инициализации оно траверсирует подразделов раздела реестра HKEY_LOCAL_MACHINE \ software \ Microsoft \ VisualStudio \ 10,0 \ system \ NewProjectTemplates TemplateDirs для построения и назвать корневые узлы дерева Типы проектов. Эта информация кэшируется для последующего использования. Посмотрите на} {\ TemplateDirs FAE04EC1-301F-11D3-BF4B-00C04F79EFBC \ /1 ключей. Каждая запись GUID VSPackage. Имя подраздела (/1) не учитывается, но ее присутствие указывает, что это корневой узел Типы проектов. Корневой узел может содержать несколько подразделов в свою очередь, отслеживающие его внешнего вида в дерево Типы проектов. Let - нам посмотреть некоторые из них.
(Значение по умолчанию)
Это идентификатор ресурса локализованной строки этой имена корневой узел. Строковый ресурс найден в вспомогательной библиотеки DLL выбранном GUID VSPackage.
В примере идентификатор GUID VSPackage
{FAE04EC1-301F-11D3-BF4B-00C04F79EFBC}
и идентификатор ресурса (по умолчанию) корневого узла (/1) #2345
Если ищется идентификатор GUID в близрасположенных пакетах, то ключей и расмотритесь подраздел SatelliteDll, можно найти путь к сборке, содержащей ресурс строки:
<путь установки Visual Studio>\ VC# \ VCSPackages \ 1033 \ csprojui.dll
При проверке этого открыть обозреватель файла и перетащите csprojui.dll в каталог Visual Studio. В таблицу строк указывает, что ресурс #2345 имеет заголовок Visual C#.
SortPriority
Это указывает расположение корневого узла в дереве Типы проектов.
SortPriority REG_DWORD 0x00000014 (20)
Низкий приоритет, чем выше число позиция в дереве.
DeveloperActivity
Если этот подраздел, то позиция корневого узла управляет диалоговым окном параметров разработчика. Например:
DeveloperActivity REG_SZ VC#
указывает, что будет корневым узлом Visual C#, Visual Studio для разработки Visual C++ набор. В противном случае будет дочерним узлом Другие языки.
Папка
Если этот подраздел, то корневой узел становится дочерним узлом указанной папки. Список возможных папок отображается под ключ
HKEY_LOCAL_MACHINE \ software \ Microsoft \ VisualStudio \ 10,0 \ NewProjectTemplates \ PseudoFolders
Например, запись проектов баз данных имеет ключ папки, который соответствует другой записи типы проектов PseudoFolders. Таким образом, в дереве Типы проектов, Проекты баз данных станет дочерним узлом Другие типы проектов.
Дочерние узлы типа проекта и файлы .vstdir
Положение дочерних узлов в дереве Типы проектов за иерархией папок в папках Шаблоны проекта. Для шаблонов компьютера (Установленные шаблоны Visual Studio), типичное расположение \ program files \ Microsoft Visual Studio 10,0 \ Common7 \ ide \ Шаблоны проекта \ и для шаблонов пользователя (Мои шаблоны), типичное расположение \ Мои документы \ Visual Studio 10 \ templates \ Шаблоны проекта \. Иерархии папок из этих 2 расположений объединяются для создания дерева Типы проектов.
Для Visual Studio с параметрами разработчика Visual C++ дерево Типы проектов выглядит примерно так:
Соответствующую папку Шаблоны проекта выглядит следующим образом:
При первом открытии диалогового окна Создать проект, Visual Studio траверсируют папку Шаблоны проекта и повторно создает свою структуру дерева Типы проектов с некоторыми изменениями:
Корневой узел дерева Типы проектов определяется шаблоном приложения.
Имя узла можно локализовать и может содержать специальные символы.
Порядок сортировки может быть изменен.
Найти корневой узел для типа проекта
При Visual Studio траверсирует папки Шаблоны проекта он открывает все zip-файлы и выделяет все файлы с расширением vstemplate. Файл с расширением vstemplate XML используется для описания шаблон приложения. Дополнительные сведения см. в разделе Создание нового проекта: В капотом, часть 2.
Тег <ProjectType> указывает тип проекта для приложения. Например, \ \ файл CSharp SmartDevice \ WindowsCE \ 1033 \ WindowsCE-EmptyProject.zip содержит файл EmptyProject.vstemplate, которому принадлежит данный тег:
<ProjectType>CSharp</ProjectType>
Тег <ProjectType> и не вложенная в папку Шаблоны проекта, определяющие корневой узел в дереве Типы проектов приложения. В примере приложения Windows CE появились бы в корневой узел Visual C# и даже если перемещение папки WindowsCE в папке Visual Basic для приложений Windows CE также появились бы в корневой узел Visual C#.
Локализация имя узла
Когда Visual Studio траверсирует папки Шаблоны проекта, он проверяет все файлы .vstdir он обнаруживает. Файл .vstdir XML-файл, который управляет представление типа проекта в диалоговом окне Создать проект. В файле .vstdir, используйте тег <LocalizedName> для именования узел Типы проектов.
Например, файл CSharp \ \ databases \ TemplateIndex.vstdir содержащий этот тег:
<LocalizedName Package="{462b036f-7349-4835-9e21-bec60e989b9c}" ID="4598"/>
Это указывает идентификатор вспомогательной библиотеки DLL и ресурсов локализованной строки, имена корневой узел, в этом случае База данных. Локализованное имя может содержать специальные символы, которые недоступны в именах папок, например .NET.
Если тег <LocalizedName> отсутствует, то тип проекта назван самой папке, SmartPhone2003.
Найти порядок сортировки для типов проектов
Чтобы указать порядок сортировки типа проекта, файлы .vstdir используют тега <SortOrder>.
Например, \ \ windows \ Windows.vstdir файл CSharp содержащий этот тег:
<SortOrder>5</SortOrder>
Файл \ CSharp \ databases \ TemplateIndex.vstdir имеет тега с большим значением.
<SortOrder>5000</SortOrder>
Чем ниже число в теге <SortOrder>, чем выше позиция в дереве узлов, поэтому появится Окна выше, чем узлы База данных в дереве Типы проектов.
Если тег <SortOrder> не определен для типа проекта, он отображается в алфавитном порядке после всех типов проектов, содержащие спецификации <SortOrder>.
Обратите внимание, что файлы .vstdir в папках " Мои документы " (Мои шаблоны). Имена типов проекта приложения пользователя не локализуются и не отображаются в алфавитном порядке.
Быстрый анализ
Let - нам внести изменения в диалоговом окне Создать проект и создать новый шаблон проекта пользователя.
Добавьте вложенную папку MyProjectNode к программным файлам \ program files \ Microsoft Visual Studio 10 \ Common7 \ ide \ папку Шаблоны проекта \ CSharp.
Создайте файл MyProject.vstdir в папке MyProjectNode, используя любой текстовый редактор.
Добавьте эти линии к файлу .vstdir:
<TemplateDir Version="1.0.0"> <SortOrder>6</SortOrder> </TemplateDir>
Сохраните файл и закройте .vstdir.
Создайте файл MyProject.vstemplate в папке MyProjectNode, используя любой текстовый редактор.
Добавьте эти линии к vstemplate-файлу.
<VSTemplate Version="2.0.0" Type="Project" xmlns="https://schemas.microsoft.com/developer/vstemplate/2005"> <TemplateData> <ProjectType>CSharp</ProjectType> </TemplateData> </VSTemplate>
Сохраните файл и закройте редактор the.vstemplate.
Отправьте файл vstemplate в новой сжатой папке MyProjectNode \ MyProject.zip.
В окне команд Visual Studio, введите:
devenv /installvstemplates
Запустите Visual Studio.
- Открыть диалоговое окно " Создать проект и разверните узел проекта Visual C#.
MyProjectNode отображается как дочерний узел Visual C# просто под узлом windows.