Как открыть дерево проекта visual studio
В отличие от простейших программ, таких как "Hello World", большинство приложений состоит из нескольких исходных файлов. Это обстоятельство порождает массу проблем, в частности, как назвать файлы, где их разместить и можно ли их использовать повторно. В интегрированной среде разработки Visual Studio принята концепция решения (solution), состоящего из ряда проектов, которые в свою очередь состоят из ряда элементов, благодаря которой разработчики могут работать с исходными файлами. Интегрированная среда разработки имеет множество встроенных инструментов, позволяющих упростить этот процесс, обеспечив разработчикам доступ к большей части их приложений. Далее рассматриваются структура решений и проектов, доступные типы проектов и способы настройки их конфигурации.
Структура решения
Работая с системой Visual Studio, пользователь открывает решение. При повторном редактировании специальных файлов создается временное решение, которое можно уничтожить по окончании работы. Однако решение позволяет управлять текущими файлами, поэтому в большинстве случаев его сохранение означает, что пользователь может вернуться к тому, что он делал накануне, и вновь открыть файлы, с которыми он работал.
Наиболее распространенным способом структурирования приложений в среде Visual Studio является одно отдельное решение, содержащее много проектов. Каждый проект можно создать из набора исходных файлов и папок. Главное окно, в котором пользователь работает с решениями и проектами, называется Solution Explorer:
Для организации работы с исходным кодом и предотвращения его ассоциации с приложениями (за исключением веб-приложений, в которых существуют специальные папки, имеющие особое предназначение в данном контексте) используются папки (folders). Некоторые разработчики используют имена папок, соответствующие пространствам имен, которым принадлежат классы. Например, если класс Person находится в папке DataClasses в проекте FirstProject, то полностью квалифицированное имя класса может выглядеть как FirstProject.DataClasses.Person.
Папки решения (solution folders) - полезный способ организации проектов в большом решении. Они отображаются только в окне Solution Explorer - физически в файловой системе их не существует. Такие действия, как Build или Unload, можно легко выполнять над всеми проектами, включенными в папку решения. Для того чтобы разгрузить окно Solution Explorer, папки решения могут быть свернуты или скрыты.
Скрытые проекты по-прежнему создаются, когда пользователь создает решение. Поскольку папки проекта не соответствуют физическим папкам, их можно добавлять, переименовывать и удалять в любое время, не рискуя повредить связи между файлами или потерять контроль над исходными файлами.
Папка Miscellaneous Files - это специальная папка решения, которую можно использовать для того, чтобы следить за тем, какие еще файлы, не являющиеся частью какого-либо проекта в решении, были открыты в системе Visual Studio. По умолчанию папка Miscellaneous Files скрыта. Для того чтобы сделать ее видимой, следует выполнить команду Tools --> Options --> Environment --> Documents --> Show Miscellaneous Files.
Несмотря на то что формат файла решения, принятый в предыдущих версиях, не изменился, в системе Visual Studio 2010 открыть файл решения, созданный в версии Visual Studio 2013, невозможно.
Кроме информации о файлах, содержащихся в приложении, файлы решения и проектов могут содержать и другие записи, например, о том, как именно должен быть скомпилирован конкретный файл, об установках проекта, о ресурсах и многом другом. Система Visual Studio 2013 имеет немодальное диалоговое окно для редактирования свойств проекта, в то время как свойства решения по-прежнему открываются в отдельном окне. Как и следовало ожидать, свойствами проекта считаются те свойства, которые относятся только к данному проекту, например информация о сборке и связях, а свойства решения определяют общую конфигурацию для сборки приложений.
Формат файла решения
Система Visual Studio 2013 фактически создает для решения два файла, имеющих расширения .suo и .sln (solution file). Первый - это довольно неинтересный бинарный файл, который сложно редактировать. Он содержит информацию, специфичную для пользователя, например, какие файлы были открыты, когда решение закрывалось в последний раз и где находились контрольные точки. Этот файл скрыт, поэтому он не должен появляться в папке решения при использовании Windows Explorer, если не снять с него соответствующую метку.
Иногда файл .suo оказывается поврежденным, и это вызывает непредсказуемые последствия при сборке и редактировании приложений. Если при работе с конкретным решением система Visual Studio становится нестабильной, необходимо выйти из нее и удалить файл с расширением .suo. Он будет создан заново системой Visual Studio, когда решение будет открыто в следующий раз. Файл решения с расширением .sln содержит информацию о решении, например список проектов, конфигурации сборки и другие настройки, не специфичные для проекта. В отличие от многих файлов, используемых в системе Visual Studio 2013, файл решения не является XML-документом. Он хранит информацию в блоках, как показано в следующем примере:
В этом примере решение состоит из трех проектов (GettingStarted, Information Services и Reference Library), а раздел Global содержит настройки, которые применяются к решению. Например, само решение будет видимым в окне Solution Explorer, потому что настройка HideSolutionNode установлена равной FALSE. Если изменить ее на TRUE, имя решения не будет отображаться в системе Visual Studio.
Свойства решения
Для того чтобы открыть диалоговое окно Properties, необходимо щелкнуть правой кнопкой мыши на узле Solution в окне Solution Explorer и выбрать команду Properties. Это диалоговое окно содержит два узла: Common properties и Configuration properties, как показано на рисунке ниже:
Более подробно узлы Common properties и Configuration properties описываются в следующих разделах.
Узел Common Properties
Определяя проект Startup Project для приложения, пользователь имеет три возможности, которые являются практически очевидными. Выбор Current Selection запускает проект, который в данный момент находится в фокусе окна Solution Explorer. Вариант Single Startup гарантирует, что каждый раз будет запускаться один и тот же проект. Эта установка задается по умолчанию, поскольку большинство приложений имеют только один стартовый проект. Последний вариант, Multiple Startup Projects, позволяет запускать несколько проектов в определенном порядке. Это может быть полезным при работе с приложением клиент/сервер в рамках одного решения, причем требуется, чтобы и клиент, и сервер выполнялись одновременно. При выполнении нескольких проектов важно контролировать порядок их запуска. Для управления порядком запуска проектов можно использовать навигационные кнопки, расположенные после списка проектов.
Раздел Project Dependencies используется для того, чтобы задавать другие проекты, от которых зависит конкретный проект. В большинстве случаев система Visual Studio сама управляет этими свойствами, когда пользователь добавляет или удаляет связи между проектами и данным проектом. Однако иногда пользователь может самостоятельно создать связи между проектами, чтобы они собирались в заданном порядке. Система Visual Studio использует этот список зависимостей, для того чтобы определить порядок сборки проектов. Окно этого раздела предотвращает неосторожное добавление циклических связей и удаление необходимых зависимостей между проектами.
В разделе Debug Source Files можно создать список каталогов, в которых система Visual Studio может искать исходные файлы при отладке. Этот список задается по умолчанию и просматривается перед открытием диалогового окна Find Source. Кроме того, пользователь может перечислить исходные файлы, которые система Visual Studio не должна искать. Если щелкнуть на кнопке Cancel в момент, когда система предлагает найти конкретный исходный файл, то он будет добавлен в этот список.
Раздел Code Analysis Settings доступен только в версии Visual Studio Team Suite. Это позволяет выбирать набор правил статического анализа кода, которые будут применяться к конкретному проекту. Более подробно раздел Code Analysis обсуждается далее.
Узел Configuration Properties
И проекты, и решения имеют конфигурации для сборки, определяющие, какие элементы должны быть собраны и почему. Это может сбить пользователя с толку, потому что на самом деле между конфигурацией проекта, определяющей, как должны собираться элементы, и конфигурацией решения, определяющей, какие проекты должны быть собраны, нет никакой корреляции, кроме случаев, когда они имеют одинаковые имена. Новое решение определит конфигурации Debug и Release (решения), что эквивалентно сборке всех проектов в решении с помощью конфигураций Debug и Release (проекта).
Например, может быть создана новая конфигурация решения Test, состоящая из двух проектов: MyClassLibrary и MyClassLibraryTest. Когда пользователь создает свое приложение в конфигурации Test, он хочет, чтобы проект MyClassLibrary был собран в режиме Release, чтобы тестировать его в виде, максимально приближенном к окончательной версии. Однако, чтобы проверить тестируемый код, необходимо собрать тестовый проект в режиме Debug.
Когда пользователь собирает проект в режиме Release, он не хочет, чтобы решение Test было собрано или развернуто вместе с приложением. В данном случае в конфигурации решения Test можно указать, что пользователь хочет, чтобы проект MyClassLibrary был собран в режиме Release, а проект MyClassLibraryTest вообще не собирался.
Пользователь может легко переключаться между этими конфигурациями с помощью меню Configuration стандартной инструментальной панели. Однако, переключаться между платформами не так легко, потому что меню Platform нет ни в одной инструментальной панели. Для того чтобы сделать ее доступной, необходимо выбрать команду View --> Toolbars --> Customize. Затем элемент Solution Platforms из категории Build на закладке Command можно перетащить на инструментальную панель.
Следует отметить, что, выбрав узел Configuration Properties в диалоговом окне Solution Properties, как показано на рисунке ниже, можно получить доступ к раскрывающимся спискам Configuration и Platform. Раскрывающийся список Configuration содержит все доступные конфигурации решения: Debug и Release (заданные по умолчанию), Active и All Configurations. Аналогично в раскрывающемся списке Platform перечислены все доступные платформы. Как только пользователь получит доступ к этим раскрывающимся спискам, он может на этой же странице задать настройки для каждой конфигурации и/или платформы. Для того чтобы добавить новые конфигурации и/или платформы для решения, пользователь может также использовать кнопку Configuration Manager.
При добавлении новых конфигураций решения существует возможность (предусмотренная по умолчанию) создания соответствующих конфигураций для существующих проектов (по умолчанию все проекты будут собираться в новой конфигурации решения), а также возможность создать новую конфигурацию на основе существующих. Если флажок Create Project Configurations установлен и новая конфигурация основана на существующей, то новые конфигурации проекта будут копировать конфигурации проекта, заданные для существующей конфигурации.
Возможности, доступные для создания новых платформенных конфигураций, ограничены типами доступных центральных процессоров: Itanium, x86 и x64. Новая платформенная конфигурация также может основываться на существующих платформенных конфигурациях, и существует возможность создания платформенной конфигурации для проекта.
В конфигурационном файле решения можно также задать тип центрального процессора, для которого оно собирается. Это особенно удобно, если нужно развернуть приложение для компьютеров с 64-битовой архитектурой. Установить настройки для всех этих решений можно непосредственно в контекстном меню, которое открывается после щелчка правой кнопкой мыши на узле Solution node в окне Solution Explorer. В то время как команда Set Startup Projects открывает окно конфигурации решения, команды Configuration Manager, Project Dependencies и Project Build Order открывают окно Configuration Manager and Project Dependencies. Команды Project Dependencies и Project Build Order отображаются в окне, только если решение состоит из нескольких проектов.
Команда Project Build Order открывает окно Project Dependencies и перечисляет порядок сборки, как показано на рисунке ниже:
Закладка Build Order демонстрирует порядок, в котором должны собираться проекты в соответствии с зависимостями между ними. Это может оказаться полезным, если пользователь поддерживает ссылки на бинарные сборки проектов, а не ссылки на проекты. Кроме того, эту возможность можно использовать для двойной проверки того, что проекты будут собраны в правильном порядке.
Вы также можете просматривать типы и элементы в проекте, искать символы, просматривать иерархию вызовов метода, искать ссылки на символы и выполнять другие действия, не переключаясь между несколькими окнами инструментов, с помощью обозревателя решений.
Работая в редакторе Visual Studio Enterprise, вы с помощью карт кода можете визуализировать структуру кода и его зависимости по всему решению. Дополнительные сведения см. в статье Сопоставление зависимостей с картами кода.
Окно Представление классов отображается в интерфейсе обозревателя решений, а также как отдельное окно. В окне Представление классов отображаются элементы приложения. В верхней области отображаются пространства имен, типы, интерфейсы, перечисления и классы, а в нижней области — элементы, которые относятся к типу, выбранному в верхней области. Используя это окно, можно переместиться к определениям элементов в исходном коде (или в обозревателе объектов, если элемент определен вне решения).
Чтобы просмотреть элементы проекта в окне Представление классов, его необязательно компилировать. Окно обновляется при изменении кода в проекте.
Добавить код в проект можно, выбрав узел проекта и нажав кнопку Добавить. При этом откроется диалоговое окно Добавление нового элемента. Код добавляется в отдельном файле.
Если проект возвращен в систему управления версиями, рядом с каждым элементом в окне Представление классов отображается значок, указывающий состояние файла исходного кода. Общие команды управления исходным кодом, такие как Извлечь, Вернуть и Получить последнюю версию, также доступны в контекстном меню элемента.
Панель инструментов представления классов
Ниже приведены команды панели инструментов окна Представление классов.
Параметры представления классов
Ниже приведены параметры, которые позволяют выбрать кнопку панели инструментов Окно классов: параметры.
name | Описание |
---|---|
Показать базовые типы | Отображаются базовые типы. |
Показать ссылки проектов | Отображаются ссылки проектов. |
Показать скрытые типы и члены | Скрытые типы и члены (не предназначенные для использования клиентами) выделяются светло-серым цветом. |
Показать открытые члены | Отображаются открытые члены. |
Показать защищенные члены | Отображаются защищенные члены. |
Показать закрытые члены | Отображаются закрытые члены. |
Показать прочие члены | Отображаются другие виды членов, включая внутренние (или Friend в Visual Basic). |
Показать унаследованные члены | Отображаются унаследованные члены. |
Контекстное меню представления классов
Контекстное меню в окне Представление классов может содержать приведенные ниже команды в зависимости от выбранного типа проекта.
name | Описание |
---|---|
Перейти к определению | Поиск определения элемента в исходном коде или в обозревателе объектов, если элемент не определен в открытом проекте. |
Найти определение | Отображение выбранного элемента в обозревателе объектов. |
Найти все ссылки | Поиск элемента выбранного объекта и отображение результатов в окне Результаты поиска |
Фильтровать по типу (только управляемый код) | Отображение только выбранного типа или пространства имен. Фильтр можно удалить, нажав кнопку Очистить поиск (X) рядом с полем Найти. |
Копировать | Копирование полного имени элемента. |
Сортировать по алфавиту | Сортировка имен типов и членов в алфавитном порядке. |
Сортировать по типу члена | Сортировка списков типов и членов по типу (таким образом, классы предшествуют интерфейсам, интерфейсы предшествуют делегатам, а методы предшествуют свойствам). |
Сортировать по доступу к члену | Сортировка типов и членов по типу доступа (открытый или закрытый). |
Группировать по типу члена | Объединение типов и членов в группы с сортировкой по типу объекта. |
Перейти к объявлению (только для кода C++) | Отображение объявления типа или члена в исходном коде, если оно есть. |
Перейти к определению | Отображение определения типа или члена в исходном коде, если оно есть. |
Перейти по ссылке | Отображение ссылки на тип или член в исходном коде, если она есть. |
Просмотр иерархии вызовов | Отображение выбранного метода в окне Иерархия вызовов |
В окне Иерархия вызовов можно просмотреть, где вызывался определенный метод или свойство. В нем также приведен список методов, вызванных из других методов. Ви можете просмотреть несколько уровней графа вызовов, в котором показаны отношения между вызывающими и вызываемыми методами в заданной области.
Чтобы открыть окно Иерархия вызовов, выберите метод (свойство или конструктор) в редакторе, а затем в контекстном меню выберите Просмотреть иерархию вызовов. Это окно должно выглядеть примерно следующим образом:
С помощью раскрывающегося списка на панели инструментов можно указать область иерархии: решение, текущий проект или текущий документ.
В основной области отображаются вызовы самого метода и вызовы из него, а на панели Вызвать сайты отображается расположение выбранного вызова. Для членов, которые являются виртуальными или абстрактными, появляется узел Переопределяет имя метода. Для членов интерфейса появляется узел Реализует имя метода.
Окно Иерархия вызовов не обнаруживает ссылки на группы методов, включая места, где метод добавлен в качестве обработчика событий или назначен делегату. Чтобы найти эти ссылки, используйте команду Найти все ссылки.
Контекстное меню в окне Иерархия вызовов содержит приведенные ниже команды.
name | Описание |
---|---|
Добавить как новый корневой элемент | Добавление выбранного узла в качестве нового корневого узла. |
Удалить корневой элемент | Удаление выбранного корневого узла из области представления в виде дерева. |
Перейти к определению | Переход к исходному определению метода. |
Найти все ссылки | Поиск всех ссылок на выбранный метод в проекте. |
Копировать | Копирование выбранного узла (кроме дочерних узлов). |
Обновление | Обновление данные. |
Обозреватель объектов
В окне Обозреватель объектов отображаются описания кода в проектах.
Вы можете отфильтровать компоненты, которые нужно просмотреть, с помощью раскрывающегося списка в верхней части окна. К пользовательским компонентам относятся исполняемые файлы управляемого кода, сборки библиотек, библиотеки типов и OCX-файлы. Пользовательские компоненты C++ добавить нельзя.
Пользовательские параметры сохраняются в каталоге приложения пользователя Visual Studio — %APPDATA%\Microsoft\VisualStudio\15.0\ObjBrowEX.dat.
Пользовательские параметры сохраняются в каталоге приложения пользователя Visual Studio — %APPDATA%\Microsoft\VisualStudio\16.0\ObjBrowEX.dat.
Слева в окне Обозреватель объектов отображаются сборки. Вы можете развернуть сборки, чтобы просмотреть содержащиеся в них пространства имен, которые также можно развернуть для просмотра содержащихся в них типов. При выборе типа его члены (например, свойства и методы) отображаются на правой панели. На нижней правой панели отображаются подробные сведения о выбранном элементе.
Найти конкретный элемент можно с помощью поля Поиск, расположенного в верхней части окна. Регистр букв при поиске не учитывается. Результаты поиска отображаются на левой панели. Чтобы очистить условия поиска, нажмите кнопку Очистить поиск (Х), расположенную рядом с полем Поиск.
Вы можете использовать обозреватель объектов для добавления ссылки на сборку в открытое решение. Для этого выберите элемент (сборку, пространство имен, тип или член) и нажмите кнопку Добавить ссылку на панели инструментов.
Параметры обозревателя объектов
С помощью кнопки Параметры обозревателя объектов на панели инструментов можно выбрать одно из приведенных ниже представлений.
name | Описание |
---|---|
Просмотр пространств имен | Отображение пространств имен вместо физических контейнеров на левой панели. Пространства имен, хранящиеся в различных физических контейнерах, объединяются. |
Просмотр контейнеров | Отображение физических контейнеров вместо пространств имен на левой панели. Представления Просмотр пространств имен и Просмотр контейнеров являются взаимоисключающими. |
Показать базовые типы | Отображение базовых типов |
Показать скрытые типы и члены | Выделение скрытых типов и членов (не предназначенных для использования клиентами) светло-серым цветом. |
Показать открытые члены | Отображение открытых членов. |
Показать защищенные члены | Отображение защищенных членов. |
Показать закрытые члены | Отображение закрытых членов. |
Показать прочие члены | Отображение других типов членов, включая внутренние (или Friend в Visual Basic). |
Показать унаследованные члены | Отображение унаследованных членов. |
Показать методы расширения | Отображение методов расширения. |
Команды контекстного меню обозревателя объектов
Контекстное меню в обозревателе объектов может содержать приведенные ниже команды в зависимости от выбранного типа элемента.
name | Описание |
---|---|
Найти определение | Отображение основного узла выбранного элемента. |
Найти все ссылки | Поиск элемента выбранного объекта и отображение результатов в окне Результаты поиска |
Фильтровать по типу | Отображение только выбранного типа или пространства имен. Фильтр можно удалить, нажав кнопку Очистить поиск. |
Копировать | Копирование полного имени элемента. |
Remove | Если область представляет собой набор пользовательских компонентов, выбранный компонент удаляется из области. |
Сортировать по алфавиту | Сортировка имен типов и членов в алфавитном порядке. |
Сортировать по типу объекта | Сортировка списков типов и членов по типу (таким образом, классы предшествуют интерфейсам, интерфейсы предшествуют делегатам, а методы предшествуют свойствам). |
Сортировать по доступу к объекту | Сортировка типов и членов по типу доступа (открытый или закрытый). |
Группировать по типу объекта | Объединение типов и членов в группы с сортировкой по типу объекта. |
Перейти к объявлению (только проекты C++) | Отображение объявления типа или члена в исходном коде, если оно есть. |
Перейти к определению | Отображение определения типа или члена в исходном коде, если оно есть. |
Перейти по ссылке | Отображение ссылки на тип или член в исходном коде, если она есть. |
Просмотр иерархии вызовов | Отображение выбранного метода в окне Иерархия вызовов |
Окно определения кода (C++)
В окне Определение кода отображается определение выбранного типа C++ или элемента в активном проекте. Тип или член можно выбрать в редакторе кода или в окне просмотра кода.
Это окно доступно только для чтения, но в нем можно установить точки останова и закладки. Чтобы изменить отображаемое определение, выберите в контекстном меню команду Изменить определение. Исходный файл открывается в редакторе кода, а курсор устанавливается на строку, где начинается определение.
Начиная с Visual Studio 2015 окно определения кода может использоваться только с кодом C++.
Контекстное меню окна определения кода
Контекстное меню в окне Определение кода может содержать приведенные ниже команды.
name | Описание |
---|---|
Быстрые действия и рефакторинг | |
Переименование | |
Создать диаграмму включаемых файлов | |
Показать определение | |
Перейти к определению | Поиск определения (или определений в случае разделяемых классов) и отображение их в окне Результаты поиска |
Перейти к объявлению | |
Найти все ссылки | Поиск ссылок на тип или член в решении. |
Просмотр иерархии вызовов | Отображение метода в окне Иерархия вызовов |
Переключение между файлами заголовков и кода | |
Выполнить тесты | Если в проекте есть модульные тесты, выполняются тесты для выбранного кода. |
Запустить отладку тестов | |
Точка останова | Вставка точки останова (или точки трассировки). |
Выполнить до текущей позиции | Выполнение программы в режиме отладки до позиции курсора. |
Фрагмент кода | |
Вырезать, Копировать, Вставить | |
Комментарий | |
Структура | Стандартные команды структурирования. |
Повторить сканирование | |
Изменить определение | Перемещение курсора к определению в окне кода. |
Выбрать кодировку | Открытие окна Кодировка для выбора кодировки файла |
Окно Структура документа
Вы можете использовать окно Структура документа совместно с представлениями конструктора, такими как конструктор для XAML-страницы или конструктор Windows Form, либо совместно с HTML-страницами. В этом окне элементы отображаются в виде дерева, благодаря чему можно просматривать логическую структуру формы или страницы и отыскивать элементы управления, скрытые или расположенные глубоко в иерархии.
Окно инструментов Обозревателя решений можно использовать для создания решений и проектов и управления ими, а также для просмотра кода и работы с ним. В этой статье мы подробно рассмотрим параметры пользовательского интерфейса, которые помогут вам делать это.
Этот раздел относится только к Visual Studio в Windows.
Окно инструментов
Окно инструментов содержит следующие элементы пользовательского интерфейса.
- Строка меню, в которой можно управлять отображением файлов
- Строка поиска, где можно искать определенные файлы и типы файлов
- Главное окно, в котором можно просматривать файлы, проекты, решения и управлять ими
- Узел решений , где можно управлять решениями.
- Узел проектов , где можно управлять проектами.
- Узел зависимостей, где можно управлять зависимостями решения и проекта
- Узел программы, где можно просматривать, изменять программу или приложение, а также управлять ими
- Вкладка изменений Git , где можно использовать Git и GitHub в Visual Studio для совместной командной работы над проектами
Если вы не видите окно инструментов Обозревателя решений, его можно открыть, выбрав Вид > Обозреватель решений в строке меню Visual Studio или нажав сочетание клавиш Ctrl+Alt+L.
Строка меню
Теперь давайте подробнее рассмотрим строку меню Обозревателя решений.
Строка меню содержит следующие элементы пользовательского интерфейса (слева направо).
Контекстное меню
В Обозревателе решений есть несколько параметров, с которыми можно взаимодействовать с помощью контекстного меню, открываемого правой кнопкой мыши. Отображаемые контекстные параметры зависят от того, какой узел выбран: Решение или Проект.
Параметры контекстного меню узла "Решение"
Параметры контекстного меню узла "Проект"
Всплывающее меню "Добавить" в контекстном меню
В контекстном меню Обозревателя решений одним из самых полезных параметров является всплывающее меню Добавить. С его помощью можно добавить еще один проект в решение. Кроме того, можно добавить элемент в проект и многое другое.
Открыть всплывающее меню Добавить можно из узлов Решение, Проект или Зависимости. Его пункты зависят от узла.
Руководство по добавлению элементов и проектов с помощью контекстного меню в Обозревателе решений см. в статье Общие сведения о проектах и решениях.
В этой статье вы узнаете, что такое проект и решение в Visual Studio. В ней также кратко рассматривается создание проекта и окно инструментов "Обозреватель решений".
Этот раздел относится к Visual Studio в Windows. Информацию о Visual Studio для Mac см. в статье Проекты и решения в Visual Studio для Mac.
Проекты
При создании в Visual Studio приложения или веб-сайта вы начинаете с проекта. С логической точки зрения проект содержит все файлы, которые будут скомпилированы в исполняемую программу, библиотеку или веб-сайт. Сюда входят файлы с исходным кодом, значками, изображениями, данными и т. д. Проект также содержит параметры компилятора и другие файлы конфигурации, которые могут потребоваться разным службам или компонентам, с которыми взаимодействует программа.
Файл проекта
Использовать решения или проекты в Visual Studio для редактирования, сборки и отладки кода необязательно. Можно просто открыть папку с файлами исходного кода в Visual Studio и начать редактирование. Дополнительные сведения см. в статье Разработка кода в Visual Studio без использования проектов и решений.
Создать новые проекты
Самый простой способ создать новый проект — использовать шаблон проекта с нужным типом проекта. Шаблон проекта — это базовый набор предварительно созданных файлов кода, файлов конфигурации, активов и параметров. Для выбора шаблона проекта нажмите Файл > Создать > Проект. Дополнительные сведения см. в разделе Создание нового проекта.
Вы можете также создать пользовательский шаблон проекта, чтобы затем использовать его для создания новых проектов. Дополнительные сведения см. в статье Создание шаблонов проектов и элементов.
При создании нового проекта Visual Studio сохраняет его в расположении по умолчанию — %USERPROFILE%\source\repos. Чтобы изменить это расположение, перейдите в раздел Средства > Параметры > Проекты и решения > Расположения. Дополнительные сведения см. в диалоговом окне параметров в разделе "Проекты и решения" > "Расположения".
Решения
Проект находится внутри решения. Несмотря на название, под решением не подразумевается "решение вопроса". Это просто контейнер для одного или нескольких связанных проектов вместе с информацией о сборке, параметрами окна Visual Studio и любыми прочими файлами, которые не относятся к какому-либо конкретному проекту.
Файл решения
В Visual Studio используются два типа файлов (SLN и SUO) для хранения параметров, связанных с решениями:
Расширение | name | Описание |
---|---|---|
.SLN | Решение Visual Studio | Организует проекты, элементы проектов и решений в решении. |
SUO | Параметры пользователя решения | Сохраняет настройки и параметры уровня пользователя, например точки останова. |
Решение описывается текстовым файлом (SLN) в собственном уникальном формате; его обычно не изменяют вручную. И наоборот, SUO-файл является скрытым и не отображается, если проводник имеет параметры по умолчанию. Для отображения скрытых файлов в меню Вид проводника установите флажок Скрытые элементы.
Папка решения
Папка решения — это виртуальная папка, которая доступна только в Обозревателе решений, где с ее помощью можно группировать проекты в решении. Если нужно найти файл решения на компьютере, перейдите к разделу Средства > Параметры > Проекты и решения > Расположения. Дополнительные сведения см. в диалоговом окне параметров в разделе "Проекты и решения" > "Расположения".
Пример проекта и решения, созданного с нуля, а также пошаговые инструкции и пример кода см. в статье Общие сведения о проектах и решениях.
обозреватель решений
На верхней панели обозревателя решений представлены кнопки для переключения между представлениями папки и решения, отображения скрытых файлов, свертывания всех узлов и других функций.
На панели инструментов в верхней части Обозревателя решений есть кнопки для переключения из представления решения в представление папки, фильтрации ожидающих изменений, отображения всех файлов, свертывания всех узлов, просмотра страниц свойств, просмотра кода в редакторе кода и т. д.
Многие команды меню доступны в контекстном меню различных элементов в Обозревателе решений. К таким командам относится сборка проекта, управление пакетами NuGet, добавление ссылок, переименование файла и запуск тестов. Это лишь некоторые из них. Дополнительные сведения см. в статье Использование Обозревателя решений.
Если вы закрыли Обозреватель решений и хотите вновь открыть его, выберите Вид > Обозреватель решений в строке меню или нажмите клавиши CTRL+ALT+L. Если же вы закрыли боковые вкладки и хотите восстановить их в расположениях по умолчанию, выберите Окно > Сброс макета окон в строке меню.
Чтобы просмотреть изображения и значки приложений, отображаемые в Visual Studio, скачайте библиотеку изображений Visual Studio.
You can also use Solution Explorer to browse the types and members in your projects, search for symbols, view a method's call hierarchy, find symbol references, and more, without having to switch between multiple tool windows.
If you have Visual Studio Enterprise edition, you can use code maps to visualize the structure of your code and its dependencies across the entire solution. For more information, see Map dependencies with code maps.
Class View is shown as part of Solution Explorer and as a separate window. Class View displays the elements of an application. The upper pane displays namespaces, types, interfaces, enumerations, and classes, and the lower pane displays the members that belong to the type selected in the upper pane. By using this window, you can move to member definitions in the source code (or in the Object Browser if the element is defined outside your solution).
You do not have to compile a project to view its elements in Class View. The window is refreshed as you modify the code in your project.
You can add code to your project by selecting the project node and choosing the Add button to open the Add New Item dialog box. The code is added in a separate file.
If your project is checked in to source code control, every Class View element displays an icon that indicates the source code status of the file. Common source code control commands such as Check Out, Check In, and Get Latest Version are also available on the shortcut menu for the element.
Class View toolbar
The Class View toolbar contains the following commands:
Name | Description |
---|---|
New Folder | Creates a virtual folder or subfolder in which you can organize frequently used elements. They are saved in the active solution (.suo) file. After you rename or delete an element in your code, it might appear in a virtual folder as an error node. To correct this problem, delete the error node. If you renamed an element, you can move it from the project hierarchy into the folder again. |
Back | Navigates to the previously selected item. |
Forward | Navigates to the next selected item. |
View Class Diagram (managed code projects only) | Becomes available when you select a namespace or type in Class View. When a namespace is selected, the class diagram shows all the types in it. When a type is selected, the class diagram shows only that type. |
Class View settings
The Class View Settings button on the toolbar has the following settings:
Name | Description |
---|---|
Show Base Types | Base types are displayed. |
Show Project References | Project references are displayed. |
Show Hidden Types and Members | Hidden types and members (not intended for use by clients) are displayed in light gray text. |
Show Public Members | Public members are displayed. |
Show Protected Members | Protected members are displayed. |
Show Private Members | Private members are displayed. |
Show Other Members | Other kinds of members are displayed, including internal (or Friend in Visual Basic) members. |
Show Inherited Members | Inherited members are displayed. |
Class View shortcut menu
The shortcut (or right-click) menu in Class View may contain the following commands, depending on the kind of project selected:
Name | Description |
---|---|
Go To Definition | Finds the definition of the element in the source code, or in the Object Browser, if the element is not defined in the open project. |
Browse Definition | Displays the selected item in the Object Browser. |
Find All References | Finds the currently selected object item and displays the results in a Find Results window. |
Filter To Type (managed code only) | Displays only the selected type or namespace. You can remove the filter by choosing the Clear Find (X) button next to the Find box. |
Copy | Copies the fully qualified name of the item. |
Sort Alphabetically | Lists types and members alphabetically by name. |
Sort by Member Type | Lists types and members in order by type (such that classes precede interfaces, interfaces precede delegates, and methods precede properties). |
Sort by Member Access | Lists types and members in order by access type, such as public or private. |
Group by Member Type | Sorts types and members into groups by object type. |
Go To Declaration (C++ code only) | Displays the declaration of the type or member in the source code, if available. |
Go To Definition | Displays the definition of the type or member in the source code, if available. |
Go To Reference | Displays a reference to the type or member in the source code, if available. |
View Call Hierarchy | Displays the selected method in the Call Hierarchy window. |
The Call Hierarchy window shows where a given method or property is called. It also lists the methods that are called from that method. You can view multiple levels of the call graph, which shows the caller-callee relationships among the methods in a specified scope.
You can display the Call Hierarchy window by selecting a method (or property or constructor) in the editor and then choosing View Call Hierarchy on the shortcut menu. The display should resemble the following image:
By using the drop-down list on the toolbar, you can specify the scope of the hierarchy: the solution, current project, or current document.
The main pane displays the calls to and from the method, and the Call Sites pane displays the location of the selected call. For members that are virtual or abstract, an Overrides method name node appears. For interface members, an Implements method name node appears.
The Call Hierarchy window does not find method group references, which include places where a method is added as an event handler or is assigned to a delegate. To find these references, use the Find All References command.
The shortcut menu in the Call Hierarchy window contains the following commands:
Name | Description |
---|---|
Add as New Root | Adds the selected node as a new root node. |
Remove Root | Removes the selected root node from the tree view pane. |
Go to Definition | Navigates to the original definition of a method. |
Find All References | Finds in the project all the references to the selected method. |
Copy | Copies the selected node (but not its subnodes). |
Refresh | Refreshes the information. |
Object Browser
The Object Browser window displays descriptions of the code in your projects.
You can filter the components you want to view by using the drop-down list at the top of the window. Custom components can include managed code executables, library assemblies, type libraries, and .ocx files. It is not possible to add C++ custom components.
Custom settings are saved in the Visual Studio user application directory, %APPDATA%\Microsoft\VisualStudio\15.0\ObjBrowEX.dat.
Custom settings are saved in the Visual Studio user application directory, %APPDATA%\Microsoft\VisualStudio\16.0\ObjBrowEX.dat.
The left pane of the Object Browser shows assemblies. You can expand the assemblies to display the namespaces they contain, and then expand the namespaces to display the types they contain. When you select a type, its members (such as properties and methods) are listed in the right pane. The lower right pane displays detailed information about the selected item.
You can search for a specific item by using the Search box at the top of the window. Searches are case-insensitive. Search results are displayed in the left pane. To clear a search, choose the Clear Search (X) button next to the Search box.
The Object Browser keeps track of the selections you have made, and you can navigate among your selections by using the Forward and Back buttons on the toolbar.
You can use the Object Browser to add an assembly reference to an open solution by selecting an item (assembly, namespace, type, or member) and choosing the Add Reference button on the toolbar.
Object Browser settings
By using the Object Browser Settings button on the toolbar, you can specify one of the following views:
Name | Description |
---|---|
View Namespaces | Displays namespaces rather than physical containers, in the left pane. Namespaces stored in multiple physical containers are merged. |
View Containers | Displays physical containers rather than namespaces, in the left pane. View Namespaces and View Containers are mutually exclusive settings. |
Show Base Types | Displays base types. |
Show Hidden Types and Members | Displays hidden types and members (not intended for use by clients), in light gray text. |
Show Public Members | Displays public members. |
Show Protected Members | Displays protected members. |
Show Private Members | Displays private members. |
Show Other Members | Displays other types of members, including internal (or Friend in Visual Basic) members. |
Show Inherited Members | Displays inherited members. |
Show Extension Methods | Displays extension methods. |
Object Browser shortcut menu commands
The shortcut (or right-click) menu in Object Browser may contain the following commands, depending on the kind of item selected:
Name | Description |
---|---|
Browse Definition | Shows the primary node for the selected item. |
Find All References | Finds the currently selected object item and displays the results in a Find Results window. |
Filter To Type | Displays only the selected type or namespace. You can remove the filter by choosing the Clear Search button. |
Copy | Copies the fully qualified name of the item. |
Remove | If the scope is a custom component set, removes the selected component from the scope. |
Sort Alphabetically | Lists types and members alphabetically by name. |
Sort by Object Type | Lists types and members in order by type (such that classes precede interfaces, interfaces precede delegates, and methods precede properties). |
Sort by Object Access | Lists types and members in order by access type, such as public or private. |
Group by Object Type | Sorts types and members into groups by object type. |
Go To Declaration (C++ projects only) | Displays the declaration of the type or member in the source code, if available. |
Go To Definition | Displays the definition of the type or member in the source code, if available. |
Go To Reference | Displays a reference to the type or member in the source code, if available. |
View Call Hierarchy | Displays the selected method in the Call Hierarchy window. |
Code Definition window (C++)
The Code Definition window displays the definition of a selected C++ type or member in the active project. The type or member can be selected in the code editor or in a code view window.
Although this window is read-only, you can set breakpoints or bookmarks in it. To modify the displayed definition, choose Edit Definition on the shortcut menu. This opens the source file in the code editor and moves the insertion point to the line where the definition begins.
Starting in Visual Studio 2015, the Code Definition window can only be used with C++ code.
Code Definition shortcut menu
The shortcut (or right-click) menu in the Code Definition window may contain the following commands:
Name | Description |
---|---|
Quick Actions and Refactorings | |
Rename | |
Generate Graph of Include Files | |
Peek Definition | |
Go To Definition | Finds the definition (or definitions, for partial classes) and displays them in a Find Results window. |
Go To Declaration | |
Find All References | Finds the references to the type or member in the solution. |
View Call Hierarchy | Displays the method in the Call Hierarchy window. |
Toggle Header / Code File | |
Run Tests | If there are unit tests in the project, runs the tests for the selected code. |
Debug Tests | |
Breakpoint | Inserts a breakpoint (or a tracepoint). |
Run to Cursor | Runs the program in debug mode to the location of the cursor. |
Snippet | |
Cut, Copy, Paste | |
Annotation | |
Outlining | Standard outlining commands. |
Rescan | |
Edit Definition | Moves the insertion point to the definition in the code window. |
Choose Encoding | Opens the Encoding window so that you can set an encoding for the file. |
Document Outline window
You can use the Document Outline window in conjunction with designer views, such as the designer for a XAML page or a Windows Form designer, or with HTML pages. This window displays the elements in a tree view, so that you can view the logical structure of the form or page and find controls that are deeply embedded or hidden.
Читайте также: