Недавно я начал работать над новым клиентом со старой унаследованной кодовой базой, в которой есть несколько решений .net, в каждом из которых обычно размещаются несколько проектов, уникальных для этого решения, но затем "заимствует" / "ссылки в" (добавление существующего проекта) в некоторых других проектах. который технически относится к другим решениям (по крайней мере, если вы идете по структуре папок в TFS)
Я никогда не видел установки, которая переплетается, нет четкого порядка сборки, иногда проект в решении A, просто ссылка ссылается прямо из выходного каталога проекта, размещенного в решении B, иногда проект просто включается напрямую, даже если он находится Далеко в структуре папок.
Похоже, что все было оптимизировано для лени разработчика.
Когда я столкнулся с ними, почему у них не было CI-сервера, они ответили, что трудно настроить код, организованный так, как он есть. (Я настраиваю это сейчас и проклинаю эту организацию кода)
Решения организованы вокруг артефактов развертывания (вещи, которые должны быть развернуты вместе, находятся в одном решении), что я считаю мудрым решением, но содержание этих решений (проектов) повсеместно.
Есть ли консенсус в отношении наилучшей практики при повторном использовании общих библиотек классов в нескольких решениях / артефактах развертывания,
- Как структурировать код в VCS
- Как облегчить совместное использование бизнес-логики между отдельными артефактами развертывания