Visual Studio Project против решения
Будучи новичком в VS, как я могу думать об этих двух понятиях, в чем разница?
10 ответов
Решение - это контейнер для проектов, который отслеживает зависимости между проектами.
Я нахожу некоторую недостающую информацию в других ответах (по крайней мере, для людей, которые приходят из других IDE, например, Eclipse) . Сказать, что решение - это контейнер для проектов, это только часть дела. Концептуальная особенность проекта VS (что определяет его "гранулярность") заключается в том, что один проект производит один вывод: обычно исполняемый файл или библиотека (dll). Итак, если вы собираетесь кодировать три исполняемых файла, которые используют связанный код, вы создадите одно решение и по крайней мере три проекта - возможно, больше.
Просто чтобы придумать метафору..
Решение - как дом, проект - как комната. Каждая комната обеспечивает функциональность, в то время как дом, контейнер комнат, предоставляет средства для объединения комнат и их правильной организации.
Вид банально, но я сделал это на лету, так что терпите меня:)
Это не помогает, что Visual Studio, кажется, делает вещи более запутанными. "Новый проект" фактически создает новое РЕШЕНИЕ, содержащее проект. "Открытый проект" фактически открывает решение, содержащее один (или несколько) проектов. (В файловом меню написано "Открыть проект / решение", но оно действительно открывает решения. Не существует "Закрыть проект", только "Закрыть решение", которое является точным).
Итак, в VS вы всегда работаете в рамках решения. Многие решения содержат только один проект, и более новые разработчики могут думать о них как об одном и том же. Однако вы можете добавить другие проекты в решение.
На случай, если кто-нибудь решит прокрутить эту страницу... Я подумал, что документы MS отлично описали различия. Я скопировал вставил (и перефразировал) соответствующие биты здесь:
Когда вы создаете приложение, приложение, веб-сайт, веб-приложение, скрипт, плагин и т. Д. В Visual Studio, вы начинаете с проекта. В логическом смысле проект содержит все файлы исходного кода, значки, изображения, файлы данных и все остальное, что будет скомпилировано в исполняемую программу или веб-сайт, или же необходимо для выполнения компиляции. Проект также содержит все параметры компилятора и другие файлы конфигурации, которые могут понадобиться различным службам или компонентам, с которыми ваша программа будет взаимодействовать.
Вам не нужно использовать решения или проекты, если вы не хотите. Вы можете просто открыть файлы в Visual Studio и начать редактирование кода.
В буквальном смысле проект представляет собой файл XML (
.vbproj
,.csproj
,.vcxproj
), которая определяет иерархию виртуальных папок, а также пути ко всем элементам, которые она "содержит", и все параметры сборки.В Visual Studio файл проекта используется обозревателем решений для отображения содержимого и настроек проекта. Когда вы компилируете свой проект, движок MSBuild использует файл проекта для создания исполняемого файла. Вы также можете настроить проекты для продукции других видов продукции.
Проект содержится в логическом смысле и в файловой системе в решении, которое может содержать один или несколько проектов, а также информацию о сборке, параметры окна Visual Studio и любые другие файлы, не связанные с каким-либо проектом. В буквальном смысле решение представляет собой текстовый файл с собственным уникальным форматом; как правило, он не предназначен для редактирования вручную.
Решение имеет связанный .suo
файл, который хранит настройки, предпочтения и информацию о конфигурации для каждого пользователя, который работал над проектом.
Решение может иметь много проектов.
Решение также может обрабатывать управление зависимостями между его различными проектами... обеспечивая, чтобы каждый проект был построен в соответствующем порядке для работы окончательного решения.
Проект содержит исполняемые и библиотечные файлы, которые составляют приложение или компонент приложения.
Решение - это заполнитель для логически связанных проектов, которые составляют приложение. Например, у вас могут быть отдельные проекты для GUI вашего приложения, уровня доступа к базе данных и так далее. Проекты будут отдельными подразделениями для функциональности вашей программы, а решением будет зонтик, объединяющий их всех в одном приложении.
Решением является читаемый текстовый файл с расширением .sln
и имея структурированный контент, который описывает проекты, которые он содержит. Проект - это читаемый текстовый файл в формате XML, расширение которого .vcxproj
и иметь структурированный контент в соответствии со своей XML-схемой, и его основная цель состоит в том, чтобы содержать список имен файлов исходных кодов и их зависимостей или ссылок на исходные коды других проектов.
Решения являются контейнерами для проектов - вы также можете использовать их для организации элементов, которые используются в разных связанных проектах (общие библиотеки DLL и тому подобное).
Решения - это контейнеры, используемые 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 могут зависеть от этого проекта общего кода. Также вы можете иметь проекты для тестирования этих проектов и т. Д.