38
просто набор проектов, и, хотя они, как правило, связаны друг с другом, это не
обязательно – по сути, решение является простым контейнером.
Visual Studio 2015 может загрузить проект только в том случае, если он
является частью решения. При создании нового проекта мы можем добавить его
в уже существующее решение, однако если мы этого не сделаем, Visual Studio
создаст для нас новое решение; в случае же открытия существующего файла
проекта Visual Studio выполнит поиск ассоциированного решения, и, если он не
даст результатов, среда разработки будет настаивать на том, чтобы мы либо
предоставили ей решение, либо позволили создать таковое. Причиной является
то, что область видимости многих операций в Visual Studio 2015 ограничена
загруженным в текущий момент решением. При построении кода обычно
выполняется построение решения. Настройки конфигурации, такие как выбор
между конфигурациями Debug (Отладка) и Rеleasе (Выпуск), контролируются на
уровне решения. Глобальный текстовый поиск выполняется по всем файлам
решения [1, c. 31].
Решение представляет собой лишь еще один файл с расширением .s1п. Как
ни странно, это не ХМL-файл — он содержит обычный текст, однако в формате,
понятном для инструмента msbuild. Если мы взглянем на содержимое папки
нашего решения, мы также заметим файл с расширением .suо. Это двоичный файл,
который содержит специфичные для отдельного пользователя настройки,
например, сведения о том, какие файлы были нами открыты и какой проект или
проекты следует открыть при запуске сеанса отладки. Наличие этого файла
позволяет гарантировать, что, когда мы откроем проект, он будет примерно в том
же состоянии, в каком мы его оставили, работая над ним в последний раз.
Поскольку эти настройки касаются отдельного пользователя, они обычно не
регистрируются в системе контроля исходного кода.
Проект может входить в состав нескольких решений. В больших базах
исходных кодов распространенной практикой является использование
нескольких .sln-файлов с разными комбинациями проектов. Среди них, как
правило, присутствует главное решение, которое включает каждый из отдельных
проектов, однако не все разработчики будут нуждаться в том, чтобы постоянно
работать со всем кодом. Например, в упомянутом выше призере, разработчику,