Поскольку я новичок в VS, как я могу думать об этих двух концепциях, в чем разница?
104
Поскольку я новичок в VS, как я могу думать об этих двух концепциях, в чем разница?
Решение - это контейнер для проектов, отслеживающий зависимости между проектами.
Я нахожу некоторую недостающую информацию в других ответах (по крайней мере, для людей, которые пришли из других IDE, например, Eclipse). Сказать, что решение - это контейнер для проектов, - это только часть дела. Концептуальная особенность проекта VS (определяющая его «гранулярность») заключается в том, что один проект производит один результат : обычно исполняемый файл или библиотеку (dll). Итак, если вы собираетесь закодировать три исполняемых файла, использующих связанный код, вы создадите одно решение и как минимум три проекта - возможно, больше.
Просто чтобы придумать метафору ..
Решение похоже на дом, проект - на комнату. Каждая комната обеспечивает часть функциональности, тогда как дом, контейнер комнат, предоставляет средства для соединения комнат и их надлежащей организации.
Вроде банально, но я придумал на ходу, так что терпите меня :)
источник
Не помогает то, что Visual Studio, кажется, все больше запутывает. «Новый проект» фактически создает новое РЕШЕНИЕ, содержащее проект. «Открыть проект» фактически открывает решение, содержащее один (или несколько) проектов. (В меню файла написано «Открыть проект / решение», но на самом деле здесь открываются решения. Не существует «Закрыть проект», только «Закрыть решение», которое является точным.
Итак, в VS вы всегда работаете в рамках решения. Многие решения содержат только один проект, и новые разработчики, вероятно, будут думать о них как об одном и том же. Однако вы можете добавить в решение другие проекты.
источник
В случае, если кто-то решит прокрутить так далеко ... Я думал, что документы MS довольно хорошо справились с описанием различий. Я скопировал вставленные (и перефразировал) соответствующие части здесь:
У решения есть связанный
.suo
файл, в котором хранятся настройки, предпочтения и информация о конфигурации для каждого пользователя, который работал над проектом.источник
У решения может быть много проектов.
Решение также может управлять зависимостями между различными проектами ... обеспечивая построение каждого проекта в соответствующем порядке для работы окончательного решения.
источник
Проект содержит исполняемые файлы и файлы библиотеки, которые составляют приложение или компонент приложения.
Решение - это заполнитель для логически связанных проектов, составляющих приложение. Например, у вас могут быть отдельные проекты для графического интерфейса вашего приложения, уровня доступа к базе данных и так далее. Проекты будут отдельными подразделениями для функциональности вашей программы, а решение будет представлять собой зонтик, объединяющий их всех в одном приложении.
источник
Решения - это контейнеры для проектов - вы также можете использовать их для организации элементов, которые используются в разных связанных проектах (общие библиотеки DLL и т. Д.).
источник
Решение представляет собой обычный текстовый файл , чье расширение
.sln
и имеют структурированный контент , который описывает проекты , которые она содержит. Проект является читаемым XML отформатированный текстовый файл , чье расширение.vcxproj
и имеет структурированный контент в соответствии с его XML - схемы, и чья основная цель состоит в том, чтобы содержать перечень исходных кодов имен файлов и их зависимостей или ссылки на исходные коды другого проекта , а также.источник
Для получения дополнительных сведений см. Https://docs.microsoft.com/en-us/visualstudio/ide/quickstart-projects-solutions.
Если вы из фона Eclipse, вы, вероятно, перейдете к созданию пути проекта и добавите зависимость от другого проекта или добавите внешнюю банку. В VS вы можете сделать это в одном контейнере, который называется решением, где все связанные проекты сгруппированы вместе.
Например. Предположим, вы создаете приложение для Android и iOS в xamrin, будет некоторый общий код и ресурсы, которые могут быть помещены в отдельный проект, и тогда ваши проекты Android и iOS могут зависеть от этого проекта общего кода. Также у вас могут быть проекты для тестирования этих проектов и т. Д.
источник