Проект Visual Studio против решения

Ответы:

71

Решение - это контейнер для проектов, отслеживающий зависимости между проектами.

pzr
источник
129

Я нахожу некоторую недостающую информацию в других ответах (по крайней мере, для людей, которые пришли из других IDE, например, Eclipse). Сказать, что решение - это контейнер для проектов, - это только часть дела. Концептуальная особенность проекта VS (определяющая его «гранулярность») заключается в том, что один проект производит один результат : обычно исполняемый файл или библиотеку (dll). Итак, если вы собираетесь закодировать три исполняемых файла, использующих связанный код, вы создадите одно решение и как минимум три проекта - возможно, больше.

Леонблой
источник
2
Не забывайте о проектах с общим кодом, которые можно включать, не создавая сборки самостоятельно.
AyCe
43

Просто чтобы придумать метафору ..

Решение похоже на дом, проект - на комнату. Каждая комната обеспечивает часть функциональности, тогда как дом, контейнер комнат, предоставляет средства для соединения комнат и их надлежащей организации.

Вроде банально, но я придумал на ходу, так что терпите меня :)

Коди С
источник
26

Не помогает то, что Visual Studio, кажется, все больше запутывает. «Новый проект» фактически создает новое РЕШЕНИЕ, содержащее проект. «Открыть проект» фактически открывает решение, содержащее один (или несколько) проектов. (В меню файла написано «Открыть проект / решение», но на самом деле здесь открываются решения. Не существует «Закрыть проект», только «Закрыть решение», которое является точным.

Итак, в VS вы всегда работаете в рамках решения. Многие решения содержат только один проект, и новые разработчики, вероятно, будут думать о них как об одном и том же. Однако вы можете добавить в решение другие проекты.

Chryses
источник
Какой смысл иметь несколько проектов в одном решении? Я этого не понимаю ..
Лига
13

В случае, если кто-то решит прокрутить так далеко ... Я думал, что документы MS довольно хорошо справились с описанием различий. Я скопировал вставленные (и перефразировал) соответствующие части здесь:

Когда вы создаете приложение, приложение, веб-сайт, веб-приложение, скрипт, подключаемый модуль и т. Д. В Visual Studio, вы начинаете с проекта. В логическом смысле проект содержит все файлы исходного кода, значки, изображения, файлы данных и все остальное, что будет скомпилировано в исполняемую программу или веб-сайт, либо что-то еще необходимо для выполнения компиляции. Проект также содержит все настройки компилятора и другие файлы конфигурации, которые могут понадобиться различным службам или компонентам, с которыми будет взаимодействовать ваша программа.

Вам не нужно использовать решения или проекты, если вы не хотите. Вы можете просто открыть файлы в Visual Studio и начать редактировать код.

В буквальном смысле, проект представляет собой файл XML ( .vbproj, .csproj,.vcxproj ) , который определяет иерархию виртуальных папок вместе с путями к всем пунктам он «содержит» и все параметры сборки.

В Visual Studio файл проекта используется обозревателем решений для отображения содержимого и настроек проекта. Когда вы компилируете свой проект, механизм MSBuild использует файл проекта для создания исполняемого файла. Вы также можете настроить проекты для получения других видов вывода.

В логическом смысле проект содержится в файловой системе в решении, которое может содержать один или несколько проектов, а также информацию о сборке, параметры окна Visual Studio и любые другие файлы, не связанные с каким-либо проектом. В буквальном смысле решение - это текстовый файл с собственным уникальным форматом; обычно он не предназначен для редактирования вручную.

У решения есть связанный .suoфайл, в котором хранятся настройки, предпочтения и информация о конфигурации для каждого пользователя, который работал над проектом.

джрахали
источник
7

У решения может быть много проектов.

Решение также может управлять зависимостями между различными проектами ... обеспечивая построение каждого проекта в соответствующем порядке для работы окончательного решения.

Джастин Нисснер
источник
3

Проект содержит исполняемые файлы и файлы библиотеки, которые составляют приложение или компонент приложения.

Решение - это заполнитель для логически связанных проектов, составляющих приложение. Например, у вас могут быть отдельные проекты для графического интерфейса вашего приложения, уровня доступа к базе данных и так далее. Проекты будут отдельными подразделениями для функциональности вашей программы, а решение будет представлять собой зонтик, объединяющий их всех в одном приложении.

Дэвид
источник
2

Решения - это контейнеры для проектов - вы также можете использовать их для организации элементов, которые используются в разных связанных проектах (общие библиотеки DLL и т. Д.).

Одед
источник
2

Решение представляет собой обычный текстовый файл , чье расширение .slnи имеют структурированный контент , который описывает проекты , которые она содержит. Проект является читаемым XML отформатированный текстовый файл , чье расширение .vcxprojи имеет структурированный контент в соответствии с его XML - схемы, и чья основная цель состоит в том, чтобы содержать перечень исходных кодов имен файлов и их зависимостей или ссылки на исходные коды другого проекта , а также.

собственное поле
источник
0

Решения - это контейнеры, используемые Visual Studio для организации одного или нескольких связанных проектов. Когда вы открываете решение в Visual Studio, оно автоматически загружает все содержащиеся в нем проекты.

Когда вы создаете новый проект в Visual Studio, он автоматически создает решение для размещения проекта, если еще нет открытого решения.

Вы можете установить зависимости проектов от других проектов в решении. Зависимый проект строится после того, как построен проект, от которого он зависит.

Для получения дополнительных сведений см. Https://docs.microsoft.com/en-us/visualstudio/ide/quickstart-projects-solutions.

Если вы из фона Eclipse, вы, вероятно, перейдете к созданию пути проекта и добавите зависимость от другого проекта или добавите внешнюю банку. В VS вы можете сделать это в одном контейнере, который называется решением, где все связанные проекты сгруппированы вместе.

Например. Предположим, вы создаете приложение для Android и iOS в xamrin, будет некоторый общий код и ресурсы, которые могут быть помещены в отдельный проект, и тогда ваши проекты Android и iOS могут зависеть от этого проекта общего кода. Также у вас могут быть проекты для тестирования этих проектов и т. Д.

Аникет Такур
источник