Каков наилучший способ сделать общие библиотеки доступными для нескольких приложений? - PullRequest
10 голосов
/ 01 сентября 2011

Как и в большинстве магазинов, у нас есть команда людей, работающих над различными проектами, которым всем нужен доступ к той же основной информации и функциям, которые относятся к нашему бизнесу, обычно в C #. В настоящее время мы просто копируем общие классы из проекта в проект, но у каждого начинает свой собственный вкус, и мы хотим объединиться.

Мы используем Tortoise SVN и решили сохранить отдельный проект, содержащий наши общие классы, но не уверены, что это лучший способ для развертывания этого общего кода в наших различных приложениях. Мы работаем во внутреннем IT-магазине, который может диктовать все, как пользователи получают доступ к приложениям, нам не нужно беспокоиться о выпуске наших продуктов в реальный мир.

Некоторые из наших мыслей были:

  1. Скомпилируйте классы в одну DLL и загрузите ее в глобальный кэш сборок (GAC)
  2. Скомпилируйте классы в одну DLL и сохраните ее на центральном общем диске, на который будут ссылаться все другие проекты
  3. Скомпилируйте классы в одну DLL и включите ее в каждый проект
  4. Просто выбирайте самые последние классы при запуске проекта, но у вас нет центральной общей библиотеки (наша интерпретация этого: http://www.yosefk.com/blog/redundancy-vs-dependencies-which-is-worse.html)
  5. SVN Externals http://svnbook.red -bean.com / ru / 1.0 / ch07s03.html

Я знаю, что это распространенная проблема, и если вы проводите какое-то время, изучая эти или другие варианты, вы неизменно найдете людей, объясняющих подводные камни каждого метода (управление версиями, регрессионное тестирование, «DLL Hell», «GAC sucks») , так далее). Я не могу найти никого, кто бы говорил о том, что работает и почему. Есть ли предпочтительный метод?

1 Ответ

2 голосов
/ 02 сентября 2011

В моей компании такая же проблема. В настоящее время мы просто используем файлы .bat, которые отправляются в нашу магистраль SVN, извлекают самые последние ссылки .dll и заполняют локальную папку ссылок для проекта, над которым вы работаете.

Однако в настоящее время мы работаем над переключением этой системы на NuGet . Я не уверен на 100%, как это работает, но это определенно стоит посмотреть. Похоже, вы можете установить его там, где вы можете указать его на общий репозиторий кода, а затем в Visual Studio с помощью плагина это так же просто, как просто щелкнуть правой кнопкой мыши и нажать «Обновить» каждый раз, когда вам нужно получить новейший код.

...