Поделиться через


Универсальные и зависящие от языка модели проектов

Надстройки Visual Studio выступан сопоставления в Visual Studio 2013. Необходимо обновить для надстройки с расширениями VSPackage. Дополнительные сведения об обновлении см. в разделе Часто задаваемые вопросы. Преобразование надстроек в расширения VSPackage.

Visual Studio предоставляет два типа моделей проектов: универсальные и относящиеся к определенному языку.

Универсальная модель проекта

Универсальная модель проекта представлена следующими типами:

Имя объекта

Описание

Коллекция Projects

Представляет все проекты решения.

Объект Project

Представляет один проект решения.

Коллекция ProjectItems

Представляет все элементы указанного проекта.

Объект ProjectItem

Представляет один элемент указанного проекта.

С помощью этих объектов можно управлять проектами любого языка в Visual Studio. Они позволяют:

  • Сохранять и удалять проекты.

  • Создавать новые элементы проекта, основанные на шаблонах Visual Studio.

  • Добавлять в проект существующие элементы из файлов.

  • Удалять элементы из проекта.

  • Открывать, сохранять или удалять элементы проекта.

Модель проекта, зависящая от языка

Кроме универсальных объектов, относящихся к проектам, набор пространств имен представляет зависящие от языка программирования свойства проекта и элементов проекта. К ним относятся следующие пространства имен:

Проекты языка представляются объектами VSProject и VSProject2. VSProject2 является производным от VSProject, который в свою очередь является производным от Project. Элементы проекта представлены объектами VSProjectItem.

Язык программирования

Пространства имен

Visual C#

VSLangProj, VSLangProj2 и VSLangProj80.

Visual Basic

VSLangProj, VSLangProj2 и VSLangProj80.

Visual C++

Microsoft.VisualStudio.VCProject и Microsoft.VisualStudio.VCProjectEngine.

Все языки программирования

EnvDTE и EnvDTE80.

Поскольку зависящие от языка объекты являются производными от универсальных, они работаюn практически так же, за исключением того, что предоставляют доступ к любым дополнительным свойствам, методам и событиям, который невозможно получить с универсальными объектами Project и ProjectItem.

Дополнительные сведения об использования языковой модели проекта см. в разделе Введение в технологию расширения проектов.

Изменения в проектах Visual Studio .NET C Visual C++

В Visual Studio .NET и за пределами, особой обработки для коллекции ProjectItems для Visual C++ больше не нужен. Иными словами, если раньше коллекция Projects Visual C++ сохраняла все файлы проекта Visual C++ в одноуровневом списке, то теперь файлы сохраняются иерархически, как и в других языках программирования.

Поскольку данное изменение может повлиять на существующий код, то при попытке индексирования коллекции ProjectItems, чтобы определить, находится ли файл в проекте, можно воспользоваться эмуляцией прежнего поведения в новой модели объектов для определенного проекта. Главным отличием является то, что теперь можно вернуться к модели объектов DTE, вызвав .Object в объекте Visual C++.

[Visual Basic]

Dim proj as VCProject = DTE.ActiveSolutionProjects(1).Object
Dim fileColl as IVCCollection = proj.Files
Dim file as VCFile = fileColl.Item("MyFile.cpp")
Dim projItem as ProjectItem = file.Object

См. также

Задачи

Практическое руководство. Создание проектов программными средствами

Практическое руководство. Создание элементов проекта программными средствами

Другие ресурсы

Управление решением и относящимися к нему проектами