Решение (Solution). Несколько проектов в решении
При дальнейшей работе с VB у вас могут встретиться ситуации, когда вы разрабатываете одновременно несколько похожих, взаимодействующих или связанных каким-то образом проектов. В этом случае бывает удобно открыть их всех в одной среде VS в пределах так называемого решения (Solution).
Делается это так. Первый проект открывается обычным образом. Наш проект сразу же после создания уже находится внутри решения состоящего из одного этого проекта. Решение это было непрошенным, но таков закон Solution Explorer: любой проект должен находиться внутри решения.
Кстати, когда решение состоит из одного проекта, то все равно, каким файлом запускать проект:
файлом проекта (WindowsApplicationl.vbproj)
или файлом решения (WindowsApplicationl.sin).
Чтобы добавить к решению еще один проект, нельзя использовать, как вы привыкли, File —> Open —> Project (открыть проект), так как при этом уже открытый проект или решение закроется, освободив место для открываемого.
Нужно использовать File —» ->Add Project (добавить проект). Откроется подменю, глядя в которое вы должны решить, хотите ли вы добавить в среду разработки новый проект (New Project) или же один из уже существующих (Existing Project).
В результате в окне Solution Explorer вы увидите решение из двух проектов.
Какой из двух проектов будет запускаться, когда вы привычно нажмете кнопку Start на панели инструментов? Тот, что выделен полужирным шрифтом. Вы сами можете задать, какой проект будет стартовать, щелкнув правой клавишей мыши в окне Solution Explorer по названию нужного проекта, а затем в открывшемся контекстном меню выбрав Set as StartUp Project. Аналогичным образом можно удалить проект из решения (не с диска), выбрав в этом же контекстном меню Remove.
Никаких папок для решения не создается. Проекты остаются в своих папках, несмотря на то, что один и тот же проект может входить в несколько решений.
Решения, состоящие из нескольких проектов, удобны тогда, когда создаются большие продукты с участием группы программистов. Каждый программист создает свою часть общего продукта в виде отдельного проекта. Проекты эти должны затем быть собраны вместе и как-то взаимодействовать в рамках продукта. Собрав проекты, созданные каждым программистом, в одно решение, руководитель группы может удобно настраивать их свойства и взаимодействие, создавать общие для всех проектов папки и файлы.
Если вы не знаете, как удобно скопировать код, элементы управления или другие компоненты из одного проекта в другой, просто запустите две среды Visual Studio .NET, в каждой откройте свой проект и копируйте.
Создаем классы и объекты
Философия. Класс — это фундамент современного объектного программирования. Классами библиотеки классов .NET Framework можно пользоваться двояко: без создания объекта и с созданием объекта. В первом случае, чтобы воспользоваться возможностями класса, надо просто написать имя класса, точку и имя нужного нам свойства или метода этого класса.
Во втором случае, чтобы воспользоваться возможностями класса, надо сначала создать объект — экземпляр этого класса, а уж затем писать имя объекта (а не класса), точку и т. д.
Создаем класс. Создается класс совершенно аналогично стандартному модулю.
Ссоздайте новый проект —» Project —» Add New Item —» в возникшем окне Add New Item выбираем Class —» Open.
Вы видите, что в окне Solution Explorer появился значок Classl.vb, а в проект добавилось окно Classl.vb, предназначенное для ввода кода:
Public Class Classl
Переименуем в окне кода этот класс на Класс и запишем в него такой код:
Public Class Класс
Public С1 As Integer =2281
Public Sub Процедура()
При объявлении переменной CI вместо слова Dim написано слово Public. Это означает, что переменная С1 будет видна не только в своем классе, но и изо всех модулей проекта. Это же слово с тем же смыслом употреблено и при объявлении процедуры.
Мы видим, что в простейшем случае класс — не более чем собрание переменных, процедур и других компонентов, т. е. не более чем стандартный модуль. Так же, как и в модуле, в нем нет ничего видимого — ни формы, ни элементов управления. Но ценность и сила его, конечно, в объектах, которые могут быть из него порождены.
Стандартный модуль объекты порождать, не способен.
Создаем объект и пользуемся им.
Поместите на форму кнопку и запишите в окне кода формы такой текст:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Buttonl.Click
Dim Объект As New Класс
Запустите проект, нажмите кнопку, проект напечатает следующее:
Первая строка процедуры создает объект — экземпляр созданного нами класса. Делается это при помощи слова New. После этого мы можем пользоваться переменными и процедурами объекта из других модулей. Перед именем переменной или процедуры объекта мы обязаны писать имя объекта (а не класса) с точкой.
Обратите внимание, что в списке компонентов объекта, разворачивающемся после ввода точки, вы видите как переменную С1, так и процедуру Процедура.
Взаимодействие форм, модулей и классов в проекте
Рассмотрим взаимодействие, взаимные различия и сходство форм, модулей и классов. Без этого и применять их как следует, мы не сможем.
Создайте проект из двух форм, двух модулей и класса.
На первую форму поместите кнопку. В окна кода введите такой текст:
Первая форма
Public Class Forml
Inherits System-Windows. Forms. Form
IWindows Form Designer generated code.
Private Sub Buttonl _Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) _Handles Buttonl.Click
Первый модуль
Public Форма2 As New Form2
Public Объект As New Класс
Вторая форма
Public Class Form2
Windows Form Designer generated code
Public F2 As String = «F2»
Public Sub Процедура_формы2()
Объект.С1 = «Форма 2 изменила переменную С1 из Объекта»
Debug. WriteLine( Объект.С1)
Второй модуль
Public M2 As String = «M2»
Public Sub Процедура_модуля2()
Форма2.F2 = «Модуль 2 изменил переменную F2 из формы 2»
Класс
Public Class Класс
Public C1 As String = «C1»
Public Sub Процедура_класса()
M2 = «Объект изменил переменную М2 из модуля 2»
Запустите проект, нажмите кнопку, проект напечатает следующее:
Модуль 2 изменил переменную F2 из формы 2
Объект изменил переменную М2 из модуля 2
Форма 2 изменила переменную С1 из Объекта
Сходство и различия будем прослеживать у трех модулей, а именно у второго стандартного модуля, второй формы и класса. Вы видите, что их код написан почти одинаковым, если не считать, конечно, начальные строки кода у формы. Код всех этих трех модулей содержит объявление переменной и объявление процедуры. И та и другая объявлены как Public, чтобы и той и другой можно было пользоваться из любого модуля проекта.
Когда форма, модуль и класс могут начать работу?
! Если форма — стартовый объект, VB сам, без нашего вмешательства и загружает ее, и показывает на экране.
Стандартные модули тоже безо всяких забот программиста готовы к работе и использованию сразу после запуска проекта.
Это значит, что форма Forml и оба модуля готовы к работе и использованию сразу после запуска проекта.
Что же касается класса и не стартовой формы, здесь дело другое. В нашем проекте забота о том, чтобы они пришли в рабочее состояние, лежит на первом стандартном модуле. Взгляните на две строки его кода.
! Если мы хотим использовать класс как объект, то, чтобы класс заработал, нам нужно из него создать объект.
Что и делает оператор
Public Объект As New Класс,
Теперь о форме. Форма, оказывается, тоже класс. Чтобы убедиться в этом, достаточно взглянуть на первую строку окна ее кода. А раз так, то, чтобы она заработала в проекте, из нее тоже должен быть создан объект и показан на экране.
! Если форма — не стартовый объект, программист должен сам создать ее как объект из ее класса, а затем показать на экране.
Первое делает оператор
Public Форма2 As New Form2
а второе — оператор
Форма2.Show()
Строки стандартного модуля, объявляющие переменные, выполняются автоматически.
Из чего следует, что нам не нужно опасаться, будут ли созданы объекты Объект и Форма2 к тому моменту, когда в них возникнет нужда. Потому и записаны две строки, их создающие, именно в стандартный модуль, потому что он сразу же после запуска проекта готов к работе, чего не скажешь о классе и форме (если она не стартовая, конечно).
Взаимные различия и сходство формы и класса.
Когда вы в режиме проектирования работаете над формой Form2, добавляете в нее элементы управления, пишете код в окно ее кода, вы создаете и видите перед собой класс (не объект) Form2.
Когда же вы запускаете проект и выполняете оператор
Public Форма2 As New Form2
вы создаете из этого класса
объект Форма2,
как экземпляр класса Form2. Форма (объект, а не класс) создана, и вы можете пользоваться ее переменными и процедурами.
Но на экране она не видна. Чтобы ее увидеть и пользоваться ее элементами управления, вы должны выполнить оператор
Аналогично, когда вы в режиме проектирования пишете код в окне модуля класса, вы создаете класс, а когда вы запускаете проект и выполняете оператор
Public Объект As New Класс
вы порождаете из этого класса
объект Объект,
как экземпляр класса Класс.
В чем же отличие формы от класса? В том, что создатели VB для удобства программистов снабдили формы механизмом визуализации. Это значит, что как в режиме проектирования, так и в режиме рабаты мы форму на экране видим. Специальные, скрытые от программиста методы рисуют и перерисовывают как форму, так и все ее элементы управления.
Класс же лишен механизма визуализации. Поэтому объекты, порожденные из него, невидимы. У них не может быть ни кнопок, ни меток, ни других элементов управления. Когда им надо сделать что-то «видимое», они «дергают за ниточки» форму и ее элементы управления, а также рисуют на их поверхности.
Правила обращения к переменным и процедурам.
Ниже под модулем понимается или форма, или класс, или стандартный модуль.
Просмотрите код процедуры Buttonl Click первой формы и коды процедур в остальных модулях и обратите внимание на то, как грамматически происходит обращение к переменным и процедурам. Вы увидите следующее:
Чтобы обратиться к переменной или процедуре, объявленным в стандартном модуле, достаточно написать имя переменной или процедуры без указания имени модуля.
Чтобы обратиться к переменной или процедуре, объявленным в классе, нужно перед их именем писать имя объекта этого класса с точкой.
Чтобы обратиться к переменной или процедуре, объявленным в форме, нужно перед их именем писать имя экземпляра класса этой формы с точкой.
Перед именем переменной или процедуры, объявленной в стандартном модуле, имя модуля писать не запрещено. Это бывает даже необходимо, когда в нескольких стандартных модулях объявлены переменные или процедуры с одинаковыми именами. Иначе их не различишь.
Все вышесказанное касается случая, когда нужно обратиться к переменной или процедуре, объявленным в чужом модуле. Когда же нужно обратиться к переменной или процедуре, объявленным в своем модуле, все просто: пишите имя переменной или процедуры и все. Иногда, правда, бывает удобно или даже необходимо указать имя хозяина или Me. Это не возбраняется (правда, в случае стандартного модуля слово Me писать нельзя).
Ниже для примера приведены разные способы обращения к собственной переменной, дающие один и тот же результат.
Вторая форма
Public F2 As String = «F2»
Public Sub Процедура_формы2()
Debug.WriteLine(Me.F2)
Второй модуль
Public М2 As String = «М2»
Public Sub Процедура_модуля2()
Класс
Public C1 As String = «C1»
Public Sub Процедура_класса()
Debug.WriteLine(Me.CI)
Из текста процедуры Buttonl Click становится также ясно, что с переменными и процедурами формы можно работать еще до того, как форма появилась на экране.
Создание нескольких объектов из одного класса
Создайте проект из формы, модуля и класса. На форму поместите кнопку. В окна кода введите такой текст:
Модуль
Public Объект1 As New Класс
Public Объект2 As New Класс
Класс
Public Class Класс
Public С As Integer =10
Public Sub Процедура()
Форма
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Запустите проект, нажмите кнопку, проект напечатает следующее:
10; 10; 1; 2; 101; 102.
Мы видим, что модуль создает из класса Класс два объекта: Объект 1 и Объект2. При создании они абсолютно одинаковы и размещаются рядышком в оперативной памяти. Как выглядят они в оперативной памяти? Не нужно представлять себе, что каждый из них является копией программного текста из окна кода класса. Для нас важно знать, что в каждом объекте располагаются ячейки памяти под переменные, объявленные в классе. В нашем случае в каждом объекте располагается ячейка под переменную С.
В коде класса переменная С инициализируется значением 10, а это значит, что она станет такой в обоих объектах, что и подтверждают результаты выполнения первых двух строк процедуры Button1 Click.
После выполнения следующих двух строк процедуры объекты перестают быть близнецами. Теперь в ячейке С у первого объекта единица, а у второго — двойка, что и подтверждается печатью.
Объект может и сам изменять значения переменных, как в себе, так и в своем братце. Убедитесь в этом, просмотрев процедуру в классе.
Создание нескольких объектов-форм из одного класса формы
Создайте проект из двух форм и модуля. На форму 1 поместите кнопку, на форму 2 три кнопки.
В окна кода введите такой текст:
Модуль
Public Форма1 As New Form2
Public Форма2 As New Form2
Форма 1 •
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Buttonl.Click
Форма 2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Buttonl.Click
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Запустите проект, нажмите кнопку формы 1, на экране появятся две совершенно одинаковые формы-близнеца. Даже заголовок у них одинаковый — Form2. При щелчках по первым двум кнопкам близнецов каждый близнец красит себя то в синий, то в красный цвет. Только себя, а не сестру. Потому что в коде написано Me. Таким образом, близнецы очень скоро перестают быть близнецами.
Третья кнопка показывает, что каждая из форм может изменять не только себя, но и сестру.
Как добавить проект в решение
![]()
Этот форум закрыт. Благодарим вас за ваш вклад. Если вам нужна дополнительная информация о том, где еще можно найти помощь, вы можете посетить страницу ресурсов.
Лучший отвечающий
Вопрос
Работал одновременно над несколькими казалось бы независимыми проектами в VS2010. В процессе работы было принято решение объединить их в одно решение и создать небольшое диалоговое окно, которое предлагает запустить тот или иной проект. Для тренировки решил сперва проделать это с чистыми проектами:
1)создаю первоначальный проект Windows Forms Application — MySolution;
2)переименовываю Form1.cs в Project1_Form.cs
3)прикрепляю к созданному решению еще один проект Project2 и задаю имя формы в нем Project2_Form;
3)вновь прикрепляю еще один проект DialogProject к решению MySolution и задаю имя формы DialogProject_Form.
Все нормально прикрепилось и создалось. Помещаю на DialogProject кнопки "Запустить Проект 1" и "Запустить Проект 2". Теперь в событиях runProject1_button_Click и runProject2_button_Click пытаюсь обратиться к формам из проектов Project1 и Project2, но они не доступны, т.е. не могу к ним обратиться с помощью кода:
"Ошибка 1 Не удалось найти имя типа или пространства имен "Project1_Form" (пропущена директива using или ссылка на сборку?)"
"Ошибка 3 Не удалось найти имя типа или пространства имен "Project2_Form" (пропущена директива using или ссылка на сборку?)"
Подскажите пожалуйста: каким образом можно из одного проекта обратиться к классам другого проекта, размещенным в одном решении?
Согласен, что гораздо правильнее было бы не мучиться и создать просто 3 формы в одном проекте одного решения и все — да, конкретно в данном случае этот метод пройдет и будет более рациональным, НО я хочу в одном решении создавать проекты(формы) как на языке C#, так и на C++(в учебных целях) и тогда этот метод совсем не подходит!
Что можно сделать, чтобы справиться с описанной проблемой?
Как продублировать проекты в Visual Studio?
Например в «Решении» у меня есть один или несколько проектов. Как выделенные проекты продублировать?
Ctrl+C, Ctrl+V не помогает.

Вроде, через интерфейс- это сделать нельзя.
Заходите в папку где лежит *.csproj, далее копируете ее целиком, переименовав саму папку и имя *.csproj файла.
Далее, через интерфейс Visual Studio выбираем добавить существующий проект.
![]()
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.9.7.43618
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Окно Solution Explorer

Ранее вы кратко ознакомились с множеством компонентов, образующих среду интегрированной разработки Visual Studio 2013. Теперь вы получите возможность поработать с тремя наиболее широко используемыми инструментальными окнами — Solution Explorer, Toolbox и Properties.
Создавая или открывая приложение или просто отдельный файл, система Visual Studio 2013 использует концепцию решения (solution) для связывания всех компонентов в единое целое. Как правило, решение состоит из одного или нескольких проектов, каждый из которых, в свою очередь, содержит множество элементов, связанных с ним. В прошлом такими элементами были обычные файлы, но в настоящее время все чаще проекты создаются из элементов, которые образованы из нескольких файлов или вообще не включают в себя ни одного файла.
Инструментальное окно Solution Explorer ( Ctrl+Alt+L ) обеспечивает удобное визуальное представление решения, проектов и элементов, как показано на рисунке ниже. На этом рисунке представлены три проекта, образующих дерево: WPF-приложение на языке C#, служебная WCF-библиотека и библиотека классов.

С каждым проектом связана отдельная пиктограмма, которая, как правило, указывает тип проекта и язык, на котором он написан. У этого правила есть несколько исключений, например, проекты установки (setup projects) не имеют языка программирования, на котором они создаются.
Один из узлов обращает на себя особое внимание, поскольку он выделен полужирным шрифтом. Это значит, что этот проект является стартовым, иначе говоря, проектом, который запускается, когда вы выполняете команду Debug —> Start Debugging или нажимаете клавишу F5 . Для того чтобы сделать проект стартовым, щелкните на соответствующей пиктограмме правой кнопкой мыши и выполните команду Set as StartUp Project. Стартовыми можно сделать сразу несколько проектов. Для этого следует использовать диалоговое окно Solution Properties, которое открывается, когда вы щелкаете правой кнопкой мыши на узле Solution и выбираете пункт Properties.
Панель инструментов в верхней части окна Solution Explorer позволяет настроить внешний вид этого окна, а также задать комбинации клавиш для разного внешнего вида отдельных элементов. Например, кнопка Show All Files — открывает листинг решения и позволяет показать на экране дополнительные файлы и папки:

Вы видите, что узел Reference Library на самом деле состоит из нескольких файлов, содержащих настройки, ресурсы и информацию о сборке.
В этом развернутом представлении можно увидеть все файлы и папки, относящиеся к структуре проекта. К сожалению, при изменении файловой системы окно Solution Explorer не обновляется автоматически, чтобы отразить эти изменения. Для того чтобы обеспечить правильное представление списка файлов и папок, можно использовать кнопку Refresh.
Инструментальная панель Solution Explorer чувствительна к контексту, поэтому в зависимости от выбранного типа узла на ней отображаются разные кнопки.
Предпросмотр файлов
Одной из наиболее интересных особенностей Visual Studio 2013 является возможность предварительного просмотра файла в обозревателе решений. Для этого необходимо нажать кнопку «Preview Selected Items» и выбрать файл в окне Solution Explorer. На вкладке обзора появится файл и его содержимое:

Вы можете свободно перемещаться по файлу и редактировать его, как и любой другой файл. Тем не менее, при переходе к другому файлу в Solution Explorer, вкладка Preview заменяется новым файлом. Другими словами, режим предпросмотра служит для быстрого открытия и перемещения по файлам вашего проекта.
Типичные задачи
Кроме удобного способа управления проектами и элементами, окно Solution Explorer содержит динамическое контекстное меню, предоставляющее быстрое выполнение наиболее типичных задач, таких как сборка решений или отдельных проектов, обращение к менеджеру конфигурации сборки и открытие файлов. На рисунках ниже продемонстрировано, как изменяется контекстное меню в зависимости от того, какой элемент был выбран в окне Solution Explorer:



Если вы еще не включили в свой проект диаграмму классов, щелкните на кнопке View Class Diagram. После этого система автоматически добавит в ваш проект эту диаграмму и все классы. Если проект содержит много классов, то эта процедура может занять довольно много времени и в результате возникнет большая и неудобная диаграмма классов. Намного лучше добавлять диаграммы классов вручную, поскольку в таком случае пользователь сохраняет над ними полный контроль.
Первые пункты в левом и среднем меню связаны с созданием либо всего решения, либо выбранного проекта. В большинстве случаев эффективнее всего выполнить команду Build, поскольку она создает лишь те проекты, которые подверглись изменениям. Однако в некоторых случаях пользователю необходимо выполнить команду Rebuild, которая создает все взаимосвязанные проекты независимо от их состояния. Если вы хотите всего лишь удалить все дополнительные файлы, возникшие в процессе создания решения, то можете выполнить команду Clean. Эта команда может оказаться полезной, если вы хотите упаковать свое решение и послать его кому-нибудь в виде электронного письма и не хотите, чтобы при этом в него попали все временные файлы или файлы вывода, возникшие при создании решения.
Для большинства элементов в окне Solution Explorer первая команда контекстного меню похожа на команду, показанную на рисунке выше: по умолчанию команды Open и Open With. позволяют указать, как будет открыт конкретный элемент. Это особенно полезно при работе с ресурсными XML-файлами. Система Visual Studio 2013 открывает эти файлы, используя встроенный редактор ресурсов, но это не позволяет вам вносить определенные изменения и поддерживать все типы данных, которые вы хотели бы включить в проект (позже будет показано, как можно использовать свои собственные типы данных в файлах ресурсов). Используя команду Open With. можно вызвать редактор XML Editor.
Контекстные меню для узлов Solution, Project и Folder содержат команду Open Folder in Windows Explorer, что позволяет быстро открыть окно проводника Windows для поиска выбранного элемента и не искать в каталогах свое решение.
Добавление проектов и элементов
К основным действиям, выполняемым в окне Solution Explorer, относятся добавление, удаление и переименование проектов и элементов. Для того чтобы добавить новый проект в существующее решение, следует выполнить команду Add —> New Project в контекстном меню, связанном с узлом Solution. В этом случае откроется диалоговое окно, показанное на рисунке ниже, которое с небольшими изменениями унаследовано от предыдущей версии системы Visual Studio. Теперь шаблоны проектов можно сортировать и искать.

Панель, показанная на рисунке, справа, содержит информацию о выбранном проекте, например его тип и описание. В иерархии Installed, появляющейся в левой части диалогового окна Add New Project, шаблоны в первую очередь упорядочены по языкам, а затем по технологиям. Среди шаблонов прежде всего следует выделить типы Office, позволяющие создавать как приложение, так и надстройки для документов, как это принято в большинстве приложений подобного рода. Хотя надстройки Office по-прежнему используют набор инструментов Visual Studio Tools for Office (VSTO), теперь он встроен в систему Visual Studio и не требует отдельной инсталляции.
Предусмотрены также закладки Recent и Online. Шаблоны Online можно сортировать и искать точно так же, как Installed, хотя критерии сортировки для них являются более широкими и включают в себя дату создания, рейтинги и частоту загрузки.
Кроме того, следует выделить еще одну особенность этого диалогового окна — возможность выбирать разные версии платформы. Если вы работаете со старым проектом и не хотите переводить его в новую версию платформы .NET Framework, то все равно можете воспользоваться новыми возможностями, такими как улучшенная технология IntelliSense. В противном случае пришлось бы инсталлировать как систему Visual Studio 2013, так и предыдущую версию, чтобы создавать проекты для более старых версий платформы. Выбор платформы также включен в критерии сортировки, что ограничивает список доступных шаблонов проекта лишь теми шаблонами, которые совместимы с выбранной версией платформы .NET Framework.
При открытии существующих решений или проектов в системе Visual Studio 2013 они проходят все этапы работы с мастером обновлений (upgrade wizard), в ходе которых в файлы проектов и решений вносятся небольшие изменения. К сожалению эти небольшие изменения связаны с внедрением дополнительных свойств, которые разрушают существующий процесс сборки, если вы используете предыдущую версию системы сборки проектов MSBuild. По этой причине вы будете вынуждены перевести всю свою команду разработчиков на версию Visual Studio 2013.
Одной из наиболее неудачных и плохо понимаемых особенностей системы Visual Studio является концепция проекта Web Site. Этот проект отличается от проекта Web Application, который можно добавить с помощью диалогового окна Add —> New Project. Для того чтобы добавить проект Web Site, необходимо выполнить команду Add —> Web Site в контекстном меню, связанном с узлом Solution. Данная команда открывает диалоговое окно, похожее на то, которое показано на рисунке ниже. В этом окне можно выбрать тип создаваемого веб-проекта. В большинстве ситуаций при этом просто определяется тип создаваемого в проекте элемента, заданный по умолчанию.

Если вы работаете с одним или несколькими проектами, то сначала должны добавить элементы. Для этого выполните команду Add в контекстном меню, которое связано с узлом проекта в окне Solution Explorer. Первое подменю New Item запускает диалоговое окно Add New Item, как показано на рисунке ниже:

Подобно диалоговым окнам New Project и New Web Site, диалоговое окно Add New Item подверглось «косметической операции». Кроме перечисления только тех шаблонных элементов, которые являются релевантными выбранному проекту, это диалоговое окно позволяет искать установленные шаблоны, а также выходить в режим онлайн для поиска шаблонов, созданных другими.
Возвращаясь к контекстному меню Add, вы заметите большое количество заранее определенных сокращенных команд, таких как User Control и Class. Они делают немного больше, чем простой пропуск стадии поиска подходящего шаблона в диалоговом окне Add New Item. Это диалоговое окно по-прежнему открыто, поскольку вы должны задать имя создаваемого элемента.
Важно понимать, что вы добавляете в проект элементы, а не файлы. Хотя многие шаблоны содержат только один файл, некоторые команды, например Window или User Control, добавят в ваш проект несколько новых файлов.
Добавление ссылок
Выпуская новые технологии разработки программного обеспечения, их авторы каждый раз обещают более удобное повторное использование кода, но в действительности лишь некоторые из них выполняют данное обещание. Один из способов, с помощью которого Visual Studio 2013 поддерживает повторное использование компонентов, основан на ссылках проекта.
Раскрыв любой проект, вы обнаружите множество библиотек .NET Framework, например System и System.Core, на которые для создания проекта необходимо как-то сослаться. По существу, ссылки позволяют компилятору распознавать типы, свойства, поля и имена методов, определенные в сборке. Если хотите повторно использовать класс из сторонней библиотеки или вашу собственную сборку, созданную по технологии .NET, вы должны добавить ссылку на нее с помощью контекстного меню Add Reference, ассоциированного с узлом проекта в окне Solution Explorer.
Когда вы открываете диалоговое окно Add Reference, показанное на рисунке ниже, система Visual Studio 2013 исследует локальный компьютер, кэш глобальной сборки Global Assembly Cache и ваше решение, чтобы представить список известных библиотек, на которые можно ссылаться. Этот список содержит ссылки как на компоненты .NET, так и на компоненты COM, внося их в разные разделы, а также ссылки на проекты и недавно использованные ссылки.

В старых версиях системы Visual Studio это диалоговое окно загружалось чрезвычайно медленно. Если компонент, который вам необходим, не указан в списке, выберите закладку Browse, позволяющую найти файл, содержащий искомые компоненты, непосредственно в файловой системе. Если вы заблаговременно загрузили список проектов в ваше решение, представили его как закладку по умолчанию и теперь неторопливо загружаете содержание для остальных закладок, то это диалоговое окно откроется на экране почти мгновенно.
Как и в других проектно-ориентированных средах разработки, начиная с первых версий среды VB, вы можете добавлять в проект ссылки, а не скомпилированные двоичные компоненты. Преимущество этой модели состоит в том, что теперь легче выполнять отладку компонента, на который указывает ссылка, и вы сможете гарантированно работать только с самыми последними версиями всех компонентов, хотя в больших решениях эта процедура может оказаться слишком неповоротливой.
Если ваше решение состоит из многих проектов (как правило, крупным считается решение, состоящее более чём из двадцати проектов), то можете разделить его на несколько решений, соответствующих разным подмножествам проектов. В этом случае вы обогатите свой опыт отладки целого приложения и одновременно повысите производительность системы Visual Studio на этапах загрузки и построения решения. В качестве альтернативы можете создать разные конфигурации построения решения, чтобы создать подмножество проектов.
Добавление ссылок на службы
Другой тип ссылок, который обслуживает проводник Solution Explorer, называется ссылками на службу (service references). В предыдущих версиях системы Visual Studio они назывались веб-ссылками, но с появлением программной модели Windows Communication Foundation (WCF) в систему Visual Studio была включена более общая команда меню Add Service Reference. Она открывает диалоговое окно Add Service Reference, показанное на рисунке ниже. В данном примере использована возможность открывать выпадающее меню с помощью кнопки Discover, чтобы просмотреть список Services в решении.

К сожалению, это диалоговое окно еще раз демонстрирует, что компания Microsoft не совсем правильно понимает потребности пользователей. Хотя само диалоговое окно допускает изменение размеров, область для вывода ответного сообщения о статусе этого не позволяет, тем самым затрудняя чтение генерируемых сообщений об ошибках. К счастью, если при попытке системы Visual Studio 2013 получить доступ к информации о службе возникла ошибка, появляется гиперссылка, с помощью которой можно открыть диалоговое окно Add Service Reference Error. Как правило, это позволяет получить достаточную информацию, чтобы устранить проблему.
В левом нижнем углу на рисунке показана кнопка Advanced. Диалоговое окно Service Reference Settings, которое открывается после щелчка на этой кнопке, позволяет вам указать, какие типы считаются частью ссылки на службу. По умолчанию считается, что все локальные системные типы соответствуют типам, опубликованным службой. Если это условие не выполняется, то уточните значения в области Data Туре, которая является частью этого диалогового окна. В левом нижнем углу диалогового окна Service Reference Settings расположена кнопка Add Web Reference, позволяющая добавлять в решение более привычные веб-ссылки. Это может оказаться важным, если вы ограничены в ресурсах или пытаетесь поддерживать работу в нескольких системах.