Введение в проекты и решения
В этой вводной статье мы изучим, что означает создание решения и проекта в Visual Studio. Решение — это контейнер для упорядочения одного проекта или нескольких связанных, например проекта библиотеки классов и соответствующего тестового проекта.
В качестве упражнения мы создадим решение и проект с нуля, чтобы понять концепцию проекта. Обычно для создания новых проектов используются шаблоны проектов Visual Studio. Также мы рассмотрим свойства проекта и некоторые файлы, которые он может содержать, и создадим ссылку из одного проекта на другой.
Примечание.
Для разработки приложений в Visual Studio не требуются решения и проекты. Вы можете просто открыть папку, содержащую код, и начать написание кода, сборку и отладку. Например, клонированный репозиторий GitHub может не содержать проекты и решения Visual Studio. Дополнительные сведения см. в статье Разработка кода в Visual Studio без использования проектов и решений.
Установите Visual Studio 2019 бесплатно со страницы скачиваемых материалов Visual Studio, если еще не сделали этого.
Установите Visual Studio бесплатно со страницы скачиваемых материалов Visual Studio, если еще не сделали этого.
Проекты и решения
В Visual Studio решение не является "ответом". Решения — это просто контейнеры, используемые Visual Studio для упорядочения одного проекта или нескольких связанных. Когда вы открываете решение в среде Visual Studio, все содержащиеся в нем проекты загружаются автоматически.
Создание решения
Обучение мы начнем с создания пустого решения. После того как вы узнаете о Visual Studio, вы, вероятно, не будете часто создавать пустые решения. При создании проекта в среде Visual Studio она автоматически создает решение для размещения проекта, если никакое решение еще не открыто.
Откройте Visual Studio.
В окне запуска выберите Создание нового проекта.
На странице Создание нового проекта введите в поле поиска пустое решение, выберите шаблон Пустое решение и нажмите Далее.
Совет
Если на компьютере установлено несколько рабочих нагрузок, шаблон Пустое решение может не отображаться в верхней части списка результатов поиска. Попробуйте прокрутить список результатов до раздела Другие результаты для вашего поискового запроса. Шаблон должен быть в этом разделе.
Присвойте решению имя QuickSolution и щелкните Создать.
Решение отобразится в Обозревателе решений в правой части окна Visual Studio. Вероятнее всего, вы довольно часто будете использовать Обозреватель решений для просмотра содержимого проектов.
Откройте Visual Studio и в начальном окне выберите Создать проект.
На странице Создание нового проекта введите в поле поиска пустое решение, выберите шаблон Пустое решение и нажмите Далее.
Совет
Если на компьютере установлено несколько рабочих нагрузок, шаблон Пустое решение может не отображаться в верхней части списка результатов поиска. Попробуйте прокрутить раздел Другие результаты для вашего поискового запроса, чтобы найти шаблон.
На странице Настройка нового проекта введите имя решения QuickSolution и выберите Создать.
Решение QuickSolution отобразится в Обозревателе решений в правой части окна Visual Studio. Вы довольно часто будете использовать Обозреватель решений для просмотра содержимого проектов.
Добавление проекта
А теперь давайте добавим первый проект в это решение. Начните с пустого проекта и добавьте необходимые элементы.
В контекстном меню, вызываемом щелчком правой кнопкой мыши элемента Решение QuickSolution в Обозревателе решений выберите Добавить>Новый проект.
Открывается диалоговое окно с заголовком Добавление проекта.
Введите текст пустой в поле поиска вверху, а затем выберите C# в разделе Язык.
Выберите шаблон Пустой проект (.NET Framework) и нажмите Далее.
Присвойте проекту имя QuickDate и выберите Создать.
Проект с именем "QuickDate" появляется под решением в обозревателе решений. Сейчас он содержит один файл с именем App.config.
Примечание.
Если вы не видите шаблон Пустой проект (.NET Framework), установите рабочую нагрузку Visual Studio Разработка классических приложений .NET. Visual Studio использует установку на основе рабочей нагрузки, чтобы устанавливать только те компоненты, которые необходимы для этого типа разработки.
Простой способ установить новую рабочую нагрузку при создании нового проекта — выбрать ссылку Установка других средств и компонентов под текстом Не нашли то, что иcкали?. После запуска Visual Studio Installer выберите рабочую нагрузку Разработка классических приложений .NET и нажмите кнопу Изменить.
Щелкните правой кнопкой мыши элемент Решение QuickSolution в Обозревателе решений и выберите Добавить>Новый проект в контекстном меню.
На странице Добавление нового проекта в поле поиска сверху введите пустой и выберите C# в разделе Все языки.
Выберите шаблон Пустой проект (.NET Framework) для C# и нажмите Далее.
Примечание.
Visual Studio использует установку на основе рабочей нагрузки, чтобы устанавливать только те компоненты, которые необходимы для этого типа разработки. Если вы не видите шаблон Пустой проект (.NET Framework), установите рабочую нагрузку Visual Studio Разработка классических приложений .NET.
Простой способ установить новую рабочую нагрузку при создании нового проекта — выбрать ссылку Установка других средств и компонентов под текстом Не нашли то, что иcкали?. В окне Visual Studio Installer выберите рабочую нагрузку Разработка классических приложений .NET и щелкните Изменить.
На странице Настроить новый проект укажите имя проекта QuickDate и выберите Создать.
Проект с именем QuickDate появляется под решением в Обозревателе решений. Проект содержит узел "Ссылки" и один файл с именем App.config.
Добавление элемента в проект
Добавьте файл кода в пустой проект.
В контекстном меню, вызываемом щелчком правой кнопкой мыши проекта QuickDate в Обозревателе решений, выберите Добавить>Новый элемент.
Откроется диалоговое окно Добавление нового элемента . Выберите " Показать все шаблоны ", если откроется диалоговое окно в компактном представлении.
Разверните узел Элементы Visual C# и выберите Код. В средней области выберите шаблон элемента Класс. В поле Имя введите Calendar и нажмите кнопку Добавить.
Visual Studio добавляет в проект файл Calendar.cs. .cs в конце — это расширение для файлов кода C#. Файл Calendar.cs отображается в визуальной иерархии проекта в Обозревателе решений и открывается в редакторе.
Замените содержимое файла Calendar.cs приведенным ниже кодом:
using System; namespace QuickDate { internal class Calendar { static void Main(string[] args) { DateTime now = GetCurrentDate(); Console.WriteLine($"Today's date is {now}"); Console.ReadLine(); } internal static DateTime GetCurrentDate() { return DateTime.Now.Date; } } }
Вам не нужно понимать все, что делает код. Запустите приложение, нажав клавиши CTRL+F5, и убедитесь, что приложение выводит текущую дату в консоли или в окне стандартного потока вывода. Затем закройте окно консоли.
Добавление второго проекта
Чаще всего решения содержат несколько проектов, которые ссылаются друг на друга. Некоторые проекты в решении могут быть библиотеками классов, некоторые — исполняемыми приложениями, а другие — проектами модульных тестов или веб-сайтами.
Чтобы добавить проект модульного теста в решение, начните с шаблона проекта, чтобы не добавлять в проект еще один файл кода.
В контекстном меню, вызываемом щелчком правой кнопкой мыши элемента Решение QuickSolution в Обозревателе решений выберите Добавить>Новый проект.
В диалоговом окне Добавить новый проект введите текст модульный тест в поле поиска вверху, а затем выберите C# в разделе Язык.
Выберите шаблон проекта Проект модульного теста для .NET Core и щелкните Далее.
Примечание.
Начиная с Visual Studio 2019 версии 16.9, имя шаблона проекта MSTest изменено с Проект модульного теста MSTest (.NET Core) на Проект модульного теста. В этом обновлении изменилось несколько шагов по созданию проекта.
Назовите проект QuickTest и щелкните ОК.
Выберите рекомендуемую версию целевой платформы (.NET Core 3.1) или .NET 5 и щелкните Создать.
Второй проект добавляется в обозреватель решений, а файл с именем UnitTest1.cs открывается в редакторе.
В контекстном меню, вызываемом щелчком правой кнопкой мыши элемента Решение QuickSolution в Обозревателе решений выберите Добавить>Новый проект.
В диалоговом окне Добавить новый проект введите текст модульный тест в поле поиска вверху, а затем выберите C# в разделе Все языки.
Выберите шаблон проекта Проект модульного теста (.NET Framework) для C# и нажмите кнопку Далее.
На странице Настроить новый проект укажите имя проекта QuickTest и выберите Создать.
Visual Studio добавляет проект QuickTest в Обозреватель решений, а файл UnitTest1.cs открывается в редакторе.
Добавление ссылки на проект
Мы будем использовать новый проект модульного теста для тестирования своего метода в проекте QuickDate, поэтому нужно добавить ссылку на QuickDate в проект QuickTest. Эта ссылка создает зависимость сборки между двумя проектами, то есть QuickDate будет собран перед QuickTest при сборке решения.
Выберите узел Зависимости в проекте QuickTest, а затем в контекстном меню выберите пункт Добавить ссылку на проект.
Открывается диалоговое окно Диспетчер ссылок.
В левой области разверните узел Проекты и выберите Решение. В средней области установите флажок рядом с пунктом QuickDate и нажмите ОК.
Добавляется ссылка на проект QuickDate.
В обозревателе решений щелкните узел Ссылки в проекте QuickTest правой кнопкой мыши и выберите в контекстном меню пункт Добавить ссылку.
В диалоговом окне "Диспетчер ссылок" выберите "Проекты". В средней области установите флажок рядом с пунктом QuickDate и нажмите ОК.
Ссылка на проект QuickDate отображается в проекте QuickTest в Обозревателе решений.
Добавление кода теста
Теперь добавим код теста в соответствующий файл кода C#. Замените все содержимое файла UnitTest1.cs приведенным ниже кодом.
using System; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace QuickTest { [TestClass] public class UnitTest1 { [TestMethod] public void TestGetCurrentDate() { Assert.AreEqual(DateTime.Now.Date, QuickDate.Calendar.GetCurrentDate()); } } }
Некоторая часть кода подчеркнута красной волнистой линией. Мы устраним эту ошибку, сделав тестовый проект дружественной сборкой для проекта QuickDate.
Добавьте следующую инструкцию using и атрибут InternalsVisibleToAttribute в начало файла Calendar.cs, чтобы устранить ошибку в тестовом проекте.
using System.Runtime.CompilerServices; [assembly: InternalsVisibleTo("QuickTest")]
Код Calendar.cs должен выглядеть как на следующем снимке экрана.
выполнить модульный тест.
Чтобы проверить работоспособность модульного теста, выберите Тест>Запустить все тесты в строке меню. Открывается окно Обозреватель тестов, где должно быть указано, что тест TestGetCurrentDate пройден.
Совет
Вы также можете открыть тестовый Обозреватель, выбрав Обозреватель тестового>теста в строке меню.
Свойства проекта
Строка в файле Calendar.cs, содержащая атрибут InternalsVisibleToAttribute, ссылается на имя сборки (имя файла) проекта QuickTest. Имя сборки может не всегда совпадать с именем проекта. Чтобы найти имя сборки проекта, откройте свойства проекта. Страницы свойств содержат различные параметры для проекта.
В Обозревателе решений щелкните правой кнопкой мыши проект QuickTest и выберите Свойства или выберите проект и нажмите клавиши ALT+ВВОД.
Страницы свойств проекта открываются на вкладке Приложение. Имя сборки проекта QuickTest — действительно QuickTest.
При необходимости это имя можно изменить здесь. При сборке тестового проекта имя итогового двоичного файла изменится с QuickTest.dll на <NewName>.dll.
Изучите другие вкладки на страницах свойств проекта, такие как Сборка и Отладка. Эти вкладки отличаются для различных типов проектов.