Проект Visual Studio vs. Solution


Відповіді:


70

Рішення є контейнером для проектів і відстежує залежності між проектами.


128

В інших відповідях я знаходжу деяку інформацію, що не вистачає (принаймні для людей, які походять з інших IDE, наприклад, Eclipse). Сказати, що рішення є контейнером для проектів - це лише частина речі. Концептуальна особливість проекту VS (що визначає його "деталізацію") полягає в тому, що один проект дає один вихід : типово виконуваний файл або бібліотеку (dll). Отже, якщо ви збираєтеся кодувати три виконувані файли, що використовують відповідний код, ви створите одне рішення і принаймні три проекти - можливо, більше.


2
Не забувайте про проекти спільного коду, які можна включити без створення збірки самостійно.
AyCe

43

Просто придумати метафору ..

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

Вид банального, але я придумав це на льоту, тож потерпіть зі мною :)


26

Це не допомагає Visual Studio, здається, робити речі більш заплутаними. "Новий проект" фактично створює новий РІШЕННЯ, що містить проект. "Відкритий проект" фактично відкриває рішення, що містить один (або багато) проект. (У меню файлу написано "Відкрити проект / рішення", але це справді відкриваються рішення. Немає "Закрити проект", а "Закрити рішення", яке є точним.

Отже, у VS ви завжди працюєте в рамках рішення. Багато рішень містять лише один проект, і новіші розробники, ймовірно, вважають їх одним і тим же. Однак ви можете додати в проект інші проекти.


Який сенс мати кілька проектів в одному рішенні? Я цього не розумію ..
Ліга

12

У випадку, якщо хтось вирішить прокрутити цю відстань вниз ... Я подумав, що документи MS зробили досить хорошу роботу з опису відмінностей. Я скопіював тут (і перефразував) відповідні біти:

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

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

У буквальному сенсі, проект являє собою файл XML ( .vbproj, .csproj,.vcxproj ) , який визначає ієрархію віртуальних папок разом зі шляхами до всіх пунктах він «містить» і всі параметри збірки.

У Visual Studio файл проекту використовується Solution Explorer для відображення вмісту та параметрів проекту. Коли ви компілюєте свій проект, двигун MSBuild споживає файл проекту для створення виконуваного файлу. Ви також можете налаштувати проекти для отримання інших видів продукції.

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

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


7

Рішення може мати багато проектів.

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


3

Проект містить виконавчі та бібліотечні файли, що складають додаток або компонент програми.

Рішення є заповнювачем для логічно пов'язаних проектів, які складають додаток. Наприклад, у вас можуть бути окремі проекти для GUI програми, рівня доступу до бази даних тощо. Проекти мають бути окремими підрозділами щодо функціональності вашої програми, а рішенням буде парасолька, що об'єднує їх усіх під однією програмою.


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 можуть залежати від цього спільного кодового проекту. Також у вас можуть бути проекти для тестування цих проектів тощо.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.