Visual Studio Project против решения - PullRequest
91 голосов
/ 05 марта 2010

Будучи новичком в VS, как я могу думать об этих двух понятиях, в чем разница?

Ответы [ 10 ]

114 голосов
/ 31 мая 2011

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

65 голосов
/ 05 марта 2010

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

38 голосов
/ 05 марта 2010

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

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

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

22 голосов
/ 17 сентября 2015

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

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

9 голосов
/ 02 июня 2017

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

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

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

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

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

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

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

6 голосов
/ 05 марта 2010

Решение может иметь несколько проектов.

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

3 голосов
/ 05 марта 2010

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

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

2 голосов
/ 14 августа 2018

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

2 голосов
/ 05 марта 2010

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

0 голосов
/ 21 февраля 2018

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

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

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

Подробнее см. https://docs.microsoft.com/en-us/visualstudio/ide/quickstart-projects-solutions

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...