Кілька додатків в одному рішенні Visual Studio [закрито]


17

Я працюю над компанією, яка хоче об'єднати всі свої програми .Net (веб-програми, програми Windows та консольні програми) в єдине рішення Visual Studio.

Я шукаю досвід розробників, які або структурують власні програми таким чином, або працюють у компанії, яка це робить. Це гарна ідея?

  • Які плюси / плюси в тому, щоб розмістити всі ваші програми в одному рішенні, а не мати окремі рішення для кожної програми?

  • Наскільки швидко проходить Visual Studio з рішенням 20+ проектів?

  • І наскільки стабільним є файл рішення з одночасно керованим джерелом розробкою?


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

Відповіді:


21

Нещодавно ми перенесли майже весь вихідний код моєї компанії в єдине рішення.

Чому?

Спочатку у нас було десятки рішень. Деякі проекти з рішення повторно використовували проекти з іншого, і ніхто не піклувався про використання менеджера пакунків. У день, коли ви істотно зміните проект, який використовується майже скрізь, очікуйте годин та годин втраченої роботи для всієї компанії протягом наступних днів чи тижнів. Найгірше, що ви навіть не можете знати, що саме вплине на зміну.

Об’єднання всього коду в одне рішення було альтернативою. Наразі це добре працює, і залежність тепер легко простежити. Хочете змінити метод, але також відстежити наслідки, які ця зміна може мати в будь-якій точці бази коду? Visual Studio може це зробити легко. Для мене це успіх.

Безперервна інтеграція тепер також простіша. Одне рішення для компіляції та розгортання. Налаштовувати майже нічого.

Чи масштабований?

Виконання продуктивності мене дуже здивувало Visual Studio . Я думав, що він почне плакати за рішенням, скажімо, з 50 проектів. Сьогодні існує понад 200 проектів; Візуальна студія виявилася достатньо масштабованою, щоб керувати ними так, ніби їх було лише 20. Так, є речі, на які потрібен час. Якщо ви перекомпілюєте кожен проект із контрактами Code, аналіз коду, включений за замовчуванням тощо, очікуйте, що це займе певний час. Але ніхто не сподівався скласти 200 проектів так швидко, як 10, і, до речі, не варто: це роль сервера безперервної інтеграції. Час запуску (холодний старт, потім завантаження розчину) вражаюче швидкий ; можливо, не так швидко, як з 10 проектами, але все-таки дуже прийнятно (менше 20 секунд на машині, купленій більше п'яти років тому).

Щоб піти далі, систематична розвантаження проектів - хороша ідея (і це дуже просто, коли проекти організовуються в каталогах у рамках рішення). Якщо хтось працює над тим, що вимагає завантаження лише трьох проектів, немає необхідності завантажувати всі 200 проектів (якщо, звичайно, залежність може не вплинути).

Контроль версій працює також, як і очікувалося (я використовую SVN-сервер, якщо це має значення). Я не працював у реальному одночасному середовищі, де, скажімо, десятки розробників часто здійснюють код, але я думаю, що це не матиме надто багато проблем. Тільки остерігайтеся випадків, коли багато розробників одночасно додають нові проекти: об’єднання файлу .sln - це не найпростіша річ.

Висновок

Якщо мені доведеться вибрати рішення ще раз:

  1. Я все одно мігрував би все в єдине рішення. Це надзвичайно скорочує біль від розбитих залежностей, і лише ця вигода цілком варта того. Мати централізоване місце для всіх кодів - це також хороша ідея; це дає можливість, наприклад, шукати щось у Visual Studio. Я також можу працювати над двома слабо пов'язаними проектами, і все ще відкриваю лише одне вікно Visual Studio.

  2. Я також вивчив би більше NuGet та можливість розміщення приватного сервера NuGet. Управління залежностями через NuGet може вирішити деякі проблеми, коли ви не хочете об'єднати кілька проектів у загальне рішення. Особисто у мене таких випадків не було, але я гадаю, що могли мати інші компанії.

  3. Нарешті, вкладення коштів у SSD для кожного розробника може внести величезні значення. Але вам не потрібно, і в моєму випадку база коду все ще зберігається на звичайному жорсткому диску.


2
Лише деякі моменти FYI: Ви також можете відкривати проекти через файл .csproj у VS, якщо швидкість / продуктивність є проблемою. NuGet "приватний сервер" - це лише мережна папка (і додайте цю папку як джерело пакета в VS) - просто викиньте туди файли nupkg, і вона працює.
Стівен Еверс

Дякуємо, MainMa за те, що ви поділилися своїм досвідом із єдиним налаштуванням рішення; дуже детальна і корисна відповідь. Я заперечую, що всі додатки разом в одному рішенні - це надання доступу молодому розробнику до всього. Ми використовуємо Ankhsvn, і я вважаю за краще дати молодшому розробнику URL-адресу для однієї програми, над якою я хочу, щоб вони працювали, ніж надавали їм доступ до всього. Будь-які думки з цього приводу?
BruceHill

@BruceHill: за допомогою SVN ви можете точно налаштувати, хто має доступ до чого. Молодший розробник все одно зможе бачити кожен кореневий каталог (див. Моє запитання про помилку сервера ), але не зможе отримати доступ до обмежених проектів.
Арсеній Муренко

2
Працюючи для кількох великих компаній з великими командами розробників, які щодня вводять код, я можу вам сказати, що єдиний підхід до рішення не працює. Кожен проект накладні. Завантажуючи, будуючи і Бог знає, які етапи збирання до / після збирання хтось може долучити до зазначених проектів. Тепер з великою командою розробників ви будете змінювати багато цих проектів щодня. Додайте тести для виконання одиниць тощо з кожною реєстрацією для безперервної інтеграції, і тоді у вас ще більше накладних витрат. Майте єдине рішення на підрозділ, який може працювати з розгортанням (сервіс, веб-сайт) і використовуйте менеджер пакунків, як NuGet.
Завжди

8

Це призначене використання.

Які плюси / плюси в тому, щоб розмістити всі ваші програми в одному рішенні, а не мати окремі рішення для кожної програми?

  • плюси:
    • легші посилання між проектами
    • легше налагодження / перехід
    • легше приєднуватися до процесів (тобто ви переходите через службу Windows, коли переходить до спільного коду бібліотеки, і він просто працює, тому що всі символи вже завантажені та обліковуються)
    • пошук коду в ide ідеально працює (вам не обов’язково знати, в якому проекті знаходиться код, який ви шукаєте)
    • списки змін між проектами легше керувати (тобто ви змінили код бібліотеки, тому вам доведеться одночасно оновлювати код клієнта за допомогою 1 реєстрації)
  • мінуси:
    • швидкість збирання: якщо у вас є звичка "відновлювати все", тоді нарощування триватиме більше часу. Набагато довше, і інкрементні побудови іноді мають прикольну поведінку.
    • іде швидкість: див. далі

Наскільки швидко проходить Visual Studio з рішенням 20+ проектів?

З 20+ проектами ... може бути не так вже й погано. Я бачив більше, ніж у VS не було проблем. Це досить стабільно / швидко. ЯКЩО ... якщо це проблема, її можна пом'якшити: відкрийте .csproj у VS і працюйте звідти. Ви не отримаєте переваг мати все в одному рішенні, але ви завжди можете знову відкрити sln, коли вам потрібно, і працювати лише у .csproj, коли вам потрібно (як зараз).

І наскільки стабільним є файл рішення з одночасно керованим джерелом розробкою?

Файл рішення змінюється лише при додаванні / видаленні проектів або об'єктів рівня рішення, тому він рідко змінюється. Це xml, тож ви можете побачити, що в ньому. Вони змінюються рідко.


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