Visual studio тип проекта
Виды проектов
Давайте разберемся, как создаются проекты и что они изначально собой представляют. Поговорим также о сопряженных понятиях: решение (solution) , проект (project) , пространство имен (namespace) , сборка (assembly) . Рассмотрим результаты работы компилятора Visual Studio с позиций программиста, работающего над проектом , и с позиций CLR , компилирующей PE- файл в исходный код процессора.
С точки зрения программиста, компилятор создает решение , с точки зрения CLR - сборку , содержащую PE- файл . Программист работает с решением , CLR - со сборкой .
Решение содержит один или несколько проектов , ресурсы, необходимые этим проектам , возможно, дополнительные файлы, не входящие в проекты . Один из проектов решения должен быть выделен и назначен стартовым проектом . Выполнение решения начинается со стартового проекта . Проекты одного решения могут быть зависимыми или независимыми . Например, все проекты одной лекции данной книги могут быть для удобства собраны в одном решении и иметь общие свойства . Изменяя стартовый проект , получаем возможность перехода к нужному примеру. Заметьте, стартовый проект должен иметь точку входа - класс , содержащий статическую процедуру с именем Main, которой автоматически передается управление в момент запуска решения на выполнение. В уже имеющееся решение можно добавлять как новые, так и существующие проекты . Один и тот же проект может входить в несколько решений .
Проект состоит из классов, собранных в одном или нескольких пространствах имен . Пространства имен позволяют структурировать проекты , содержащие большое число классов , объединяя в одну группу близкие классы. Если над проектом работает несколько исполнителей, то, как правило, каждый из них создает свое пространство имен . Помимо структуризации, это дает возможность присваивать классам имена, не задумываясь об их уникальности. В разных пространствах имен могут существовать одноименные классы. Проект - это основная единица , с которой работает программист. Он выбирает тип проекта , а Visual Studio создает скелет проекта в соответствии с выбранным типом.
Дальнейшие объяснения лучше сочетать с реальной работой над проектами . Поэтому во всей этой книге я буду вкратце описывать свои действия по реализации тех или иных проектов , надеясь, что их повторение читателем будет способствовать пониманию текста и сути изучаемых вопросов.
Консольный проект
Если принять эти установки, то компилятор создаст решение , имя которого совпадает с именем проекта . На рис. 2.2 показано, как выглядит это решение в среде разработки:
Интегрированная среда разработки IDE (Integrated Development Environment ) Visual Studio является многооконной, настраиваемой, обладает большим набором возможностей. Внешний вид ее достаточно традиционен, хотя здесь есть новые возможности; я не буду заниматься ее описанием, полагаясь на опыт читателя и справочную систему. Обращаю внимание лишь на три окна, из тех, что показаны на рис. 2.2. В окне Solution Explorer представлена структура построенного решения . В окне Properties можно увидеть свойства выбранного элемента решения . В окне документов отображается выбранный документ, в данном случае, программный код класса проекта - ConsoleHello.Class1 . Заметьте, в этом окне можно отображать и другие документы, список которых показан в верхней части окна.
Построенное решение содержит, естественно, единственный заданный нами проект - ConsoleHello . Наш проект , как показано на рис. 2.2, включает в себя папку со ссылками на системные пространства имен из библиотеки FCL , файл со значком приложения и два файла с расширением cs . Файл AssemblyInfo содержит информацию, используемую в сборке , а файл со стандартным именем Class1 является построенным по умолчанию классом, который задает точку входа - процедуру Main , содержащую для данного типа проекта только комментарий .
Заметьте, класс проекта погружен в пространство имен , имеющее по умолчанию то же имя, что и решение , и проект . Итак, при создании нового проекта автоматически создается достаточно сложная вложенная структура - решение , содержащее проект , содержащий пространство имен , содержащее класс , содержащий точку входа. Для простых решений такая структурированность представляется избыточной, но для сложных - она осмысленна и полезна.
Помимо понимания структуры решения , стоит также разобраться в трех важных элементах, включенных в начальный проект - предложение using, тэги документации в комментариях и атрибуты .
Пространству имен может предшествовать одно или несколько предложений using, где после ключевого слова следует название пространства имен - из библиотеки FCL или из проектов , связанных с текущим проектом . В данном случае задается пространство имен System - основное пространство имен библиотеки FCL . Предложение using NameA облегчает запись при использовании классов, входящих в пространство NameA , поскольку в этом случае не требуется каждый раз задавать полное имя класса с указанием имени пространства , содержащего этот класс . Чуть позже мы увидим это на примере работы с классом Console пространства System . Заметьте, полное имя может потребоваться, если в нескольких используемых пространствах имен имеются классы с одинаковыми именами.
Можно расширить Visual Studio , создав новый тип проекта. Чтобы создать новый тип проекта, необходимо ознакомиться с некоторыми концепциями и выполнить ряд действий. В следующих разделах приводятся общие сведения о создании типов проектов.
Содержание раздела
Обсуждаются элементы, сохраняемость файлов проекта и обязательства по проектированию механику, которые необходимо выполнить перед созданием нового типа проекта.
Содержит общие сведения о шагах, которые необходимо выполнить для создания нового типа проекта, который поддерживает такие задачи программирования, как редактирование кода и компиляция, сборка, отладка и развертывание приложений в проекте.
Содержит сведения о том, как предоставить и использовать фабрику проектов для создания экземпляров нового проекта.
Предоставляет образцы кода инструкций из реестра, которые предоставляют пути и данные по умолчанию, а также таблицу, содержащую записи из скрипта реестра для каждой инструкции.
Обсуждается использование IPersistFileFormat для сохранения как файловых, так и нефайловых объектов проекта.
Описывает, как тип проекта может использовать MSBuild механизм сборки, чтобы разрешить пользователям выполнять сборку из Visual Studio и из командной строки.
Связанные разделы
Описание архитектуры средств просмотра кода, таких как Обозреватель объектов и окно представление классов . Описывает интерфейсы и методы, используемые для реализации обзора объектов в VSPackage.
Описывает важность, которую играют проекты при определении того, какой редактор используется при открытии элемента проекта и о том, как можно манипулировать ресурсами проекта.
здесь показано, как предоставить пакету vspackage собственное уникальное удостоверение и как обернуть библиотеки dll VSPackage и другие сведения в установщик Windowsном пакете (.MSI файле) для развертывания на клиентах.
Описывает Visual Studio , как представления и иерархии адресов.
Содержит общие сведения о VSPackage, устанавливаемый COM-объект, который расширяет Visual Studio среду и обсуждает реализацию собственного пакета VSPackage.
Описывает, как использовать проекты для изменения кода, компиляции и построения кода, а также выполнения и отладки кода и предоставляет ссылки на подробные разделы, посвященные созданию типов проектов.
Windows Store
Категория проектов Windows Store появилась в Visual Studio 2013. Ранее шаблон Windows Store находился в категории Windows. Эта категория появляется только если вы работаете под управлением операционной системы версии Windows 8.1. Проекты этого типа создаются для приложений Windows Runtime.
Windows
Категория проектов Windows - самая крупная. Она включает в себя большинство распространенных типов проектов, выполняемых в пользовательских операционных системах. В частности, она содержит выполняемые проекты Windows Forms, проекты приложений Console и приложения Windows Presentation Foundation (WPF). Эти типы проектов предусматривают создание сборки (.exe), выполняемой непосредственно пользователем. Категория Windows включает также несколько типов библиотечных сборок, на которые легко ссылаться из других проектов. К ним относятся как библиотеки классов, так и библиотеки элементов управления для приложений Windows Forms и WPF. Файлы библиотек классов имеют хорошо известные расширения DLL. К этой же категории относится тип проектов Windows Service.
Web
Office
Как следует из названия этой категории, к ней относятся управляемые программные надстройки для продуктов Microsoft Office, таких как Outlook, Word или Excel. Проекты этих типов используют средства Visual Studio Tools for Office (VSTO) и способны создавать надстройки для большинства продуктов, включая пакеты Office 2003, Office 2007, Office 2010 и Office 2013.
SharePoint
Эта категория с самоочевидным названием содержит проекты, предназначенные для веб-платформ Windows SharePoint Services, таких как SharePoint Workflows или Team Sites.
Database
Данная категория содержит типы проектов для создания кода, который можно использовать на сервере SQL Server. К ним относятся хранимые процедуры, пользовательские типы и функции, триггеры и специальные агрегирующие функции.
Cloud
По умолчанию раздел Cloud содержит только ссылку, которая может извлечь Windows Azure SDK. После установки SDK, появляются дополнительные шаблоны проектов, связанных с разработкой приложений Azure.
LightSwitch
Категория проектов LightSwitch появилась в Visual Studio 2013. Сам продукт используется для быстрого создания бизнес-приложений с использованием новейших технологий. Шаблоны проектов в этой категории позволяют создавать приложения как для настольных, так и для HTML.
Reporting
К этой категории относится тип проекта, идеально подходящий для быстрой генерации сложных отчетов об источнике данных.
Silverlight
Эта категория содержит типы для создания приложений Silverlight Applications или проектов Class Library.
Test
Данная категория включает в себя тип для проектов, содержащих тесты, использующие каркас для тестирования модулей MSTest.
WCF
Эта категория содержит большое количество типов проектов для создания приложений, обеспечивающих веб-службы с использованием технологии Windows Communication Foundation (WCF).
Workflow
Эта категория содержит большое количество типов проектов для создания библиотек и приложений, реализующих последовательные процессы и конечные автоматы.
Формат файлов проекта
Для того чтобы отобразить файл проекта в формате XML, следует щелкнуть правой кнопкой мыши на проекте и выбрать команду Unload. Затем необходимо снова щелкнуть правой кнопкой мыши на проекте и выбрать команду Edit . В результате в окне редактора XML, поддерживающего технологию IntelliSense, появится файл проекта.
Вы можете создать проект на языке из разряда C, используя шаблоны проектов C++. Найдите в созданном проекте файлы с расширением CPP и измените его на C. Затем на странице Свойства проекта проекта (а не решения) разверните узлы Свойства конфигурации, C/C++ и выберите Дополнительно. Измените значение параметра Компилировать как на Компилировать как C код (/TC).
Шаблоны проектов
Шаблоны проектов, входящие в Visual Studio, зависят от версии продукта и установленных рабочих нагрузок. если вы установили рабочую нагрузку разработка классических приложений на c++, Visual Studio содержит эти шаблоны проектов C++.
Настольный компьютер с Windows
Шаблон проекта | Описание |
---|---|
Консольное приложение Windows | Проект для создания консольного приложения Windows. |
Классическое приложение для Windows | Проект для создания классического приложения Windows (Win32). |
Библиотека динамической компоновки | Проект для создания библиотеки динамической компоновки (DLL). |
Статическая библиотека | Проект для создания статической библиотеки (LIB). |
Мастер классических приложений Windows | Мастер для создания классических приложений Windows и библиотек с дополнительными параметрами. |
Общие сведения
Шаблон проекта | Описание |
---|---|
Пустой проект | Пустой проект для создания приложения, библиотеки или DLL. Необходимо добавить требуемый код или ресурсы. |
Проект, использующий файл makefile | проект, который создает оболочку для Windows файла makefile в Visual Studioном проекте. (чтобы открыть файл makefile "как есть" в Visual Studio, используйте " открыть папку". |
Проект общих элементов | Проект, используемый для совместного использования файлов кода или файлов ресурсов между несколькими проектами. Этот тип проекта не создает исполняемый файл. |
Шаблон проекта | Описание |
---|---|
Проект ATL | Проект, использующий библиотеку шаблонных классов ATL. |
Шаблон проекта | Описание |
---|---|
Проект модульного теста в машинном коде | Проект, содержащий машинные модульные тесты C++. |
Если добавить компонент поддержки MFC и ATL в вашу установку Visual Studio, эти шаблоны проектов добавляются в Visual Studio.
Шаблон проекта | Описание |
---|---|
Приложение MFC | Проект приложения, которое использует библиотеку Microsoft Foundation Class (MFC). |
Элемент управления ActiveX библиотеки MFC | Проект элемента управления ActiveX, который использует библиотеку MFC. |
Библиотека DLL MFC | Проект библиотеки динамической компоновки (DLL), использующей библиотеку MFC. |
Универсальные приложения Windows
Если добавить компонент инструментов универсальной платформы Windows на C++ в вашу установку Visual Studio, эти шаблоны проектов добавляются в Visual Studio.
Обзор универсальных приложений Windows на C++ см. в разделе Универсальные приложения Windows (C++).
Шаблон проекта | Описание |
---|---|
Пустое приложение | Проект одностраничного приложения универсальной платформы Windows (UWP), которое не имеет предопределенных элементов управления или макета. |
Приложение DirectX 11 | Проект приложения универсальной платформы Windows, которое использует DirectX 11. |
Приложение DirectX 12 | Проект приложения универсальной платформы Windows, которое использует DirectX 12. |
Приложение DirectX 11 и XAML | Проект для приложения универсальной платформы Windows, которое использует DirectX 11 и XAML. |
Приложение модульных тестов | Проект приложения модульного тестирования для приложений универсальной платформы Windows (UWP). |
DLL | Проект для библиотеки динамической компоновки с машинным кодом (DLL), который может использоваться компонентами среды выполнения или приложениями универсальной платформы Windows. |
Статическая библиотека | Проект для статической библиотеки с машинным кодом (LIB), который может использоваться компонентами среды выполнения или приложениями универсальной платформы Windows. |
Компонент среды выполнения Windows | Проект для компонента среды выполнения Windows, который может использоваться приложениями универсальной платформы Windows вне зависимости от языка программирования, на котором они написаны. |
Проект упаковки приложений Windows | Проект, создающий пакет UWP, который позволяет загрузить классическое приложение в неопубликованном виде либо распространять его через Microsoft Store. |
Комментарии TODO
Многие файлы, создаваемые шаблоном проекта, содержат комментарии TODO, помогающие найти места для вставки собственного исходного кода. Дополнительные сведения о добавлении кода см. в разделах Добавление функциональных возможностей с помощью мастеров кода и Работа с файлами ресурсов.
Давайте создадим консольное приложение, выбрав в меню File (Файл) пункт New --- Project (Создать --- Проект):
Solution Explorer
Утилита Solution Explorer (Обозреватель решений), доступная через меню View (Вид), позволяет просматривать набор всех файлов с содержимым и ссылаемых сборок, которые входят в состав текущего проекта:
Добавление ссылок на внешние сборки
Просмотр свойств проекта
И, наконец, напоследок важно обратить внимание на наличие в окне утилиты Solution Explorer пиктограммы Properties (Свойства). Двойной щелчок на ней приводит к открытию редактора конфигурации проекта, окно которого называется Project Properties (Свойства проекта):
В этом окне можно устанавливать различные параметры безопасности, назначать сборке надежное имя, развертывать приложение, вставлять необходимые для приложения ресурсы и конфигурировать события, которые должны происходить перед и после компиляции сборки.
Утилита Object Browser
В Visual Studio доступна еще одна утилита для изучения множества сборок, на которые имеются ссылки в текущем проекте. Называется эта утилита Object Browser (Браузер объектов) и получить к ней доступ можно через меню View. После открытия ее окна останется просто выбрать сборку, которую требуется изучить:
Отличие проектов от решений
Одной из важных вещей, которые необходимо понимать, является понимание разницы между проектом и решением:
Под понимается набор всех файлов исходного кода и ресурсов, которые будут компилироваться в единственную сборку (или в ряде случаев — в единственный модуль). Например, проектом может быть библиотека классов или приложение Windows с графическим пользовательским интерфейсом.
Под решением (solution) понимается набор всех проектов, которые будут образовывать определенный программный пакет (приложение).
Чтобы еще больше прояснить, в чем состоит отличие между проектом и решением, давайте посмотрим, что происходит при поставке проекта, состоящего из нескольких сборок. Например, это может быть интерфейс пользователя, специальные элементы управления и другие компоненты, поставляемые в виде библиотек в отдельных частях приложения. Кроме того, может существовать другой пользовательский интерфейс, предназначенный специально для администраторов. Каждая из этих частей приложения может содержаться внутри отдельной сборки и, следовательно, рассматриваться в Visual Studio как отдельный проект. Однако существует вероятность того, что все эти части будут кодироваться параллельно в сочетании друг с другом. В таком случае полезно иметь возможность редактировать их в Visual Studio как единое целое. Visual Studio позволяет делать это, рассматривая все проекты как образующие одно решение и воспринимая это решение как единый компонент, который должен считываться и делаться доступным для работы.
Читайте также: