Как и в большинстве магазинов, у нас есть команда людей, работающих над различными проектами, которым всем нужен доступ к той же основной информации и функциям, которые относятся к нашему бизнесу, обычно в C #. В настоящее время мы просто копируем общие классы из проекта в проект, но у каждого начинает свой собственный вкус, и мы хотим объединиться.
Мы используем Tortoise SVN и решили сохранить отдельный проект, содержащий наши общие классы, но не уверены, что это лучший способ для развертывания этого общего кода в наших различных приложениях. Мы работаем во внутреннем IT-магазине, который может диктовать все, как пользователи получают доступ к приложениям, нам не нужно беспокоиться о выпуске наших продуктов в реальный мир.
Некоторые из наших мыслей были:
- Скомпилируйте классы в одну DLL и загрузите ее в глобальный кэш сборок (GAC)
- Скомпилируйте классы в одну DLL и сохраните ее на центральном общем диске, на который будут ссылаться все другие проекты
- Скомпилируйте классы в одну DLL и включите ее в каждый проект
- Просто выбирайте самые последние классы при запуске проекта, но у вас нет центральной общей библиотеки (наша интерпретация этого: http://www.yosefk.com/blog/redundancy-vs-dependencies-which-is-worse.html)
- SVN Externals http://svnbook.red -bean.com / ru / 1.0 / ch07s03.html
Я знаю, что это распространенная проблема, и если вы проводите какое-то время, изучая эти или другие варианты, вы неизменно найдете людей, объясняющих подводные камни каждого метода (управление версиями, регрессионное тестирование, «DLL Hell», «GAC sucks») , так далее). Я не могу найти никого, кто бы говорил о том, что работает и почему. Есть ли предпочтительный метод?