Управление внутренними сторонними зависимостями - PullRequest
6 голосов
/ 08 июля 2010

У нас много разных решений / проектов, которыми управляют разные команды.Наше решение должно ссылаться на несколько проектов, которыми владеет другая команда.Мы не хотим добавлять эти зависимости в качестве ссылок на проекты, потому что мы не собираемся изменять этот код, мы просто хотим его использовать.Кроме того, у нас уже есть довольно много проектов в нашем решении, и мы не хотим добавлять больше, поскольку это замедлит работу Visual Studio.Таким образом, мы строим эти проекты в отдельном решении и добавляем их в виде файловых ссылок на наше решение.

Мой вопрос: как люди управляют этими типами зависимостей?Должен ли я иметь какой-то автоматизированный процесс, который ищет изменения в этих проектах, собирает их и проверяет библиотеки в нашем контроле исходного кода, после чего мы относимся к ним как к сторонним зависимостям?Есть ли рекомендуемый способ сделать это?

Ответы [ 2 ]

1 голос
/ 08 июля 2010

Одним из решений, хотя это не обязательно то, что вы ищете, является предоставление каждой зависимой подсистемы выполнения выпуска. Этот выпуск может быть в форме установки MSI или просто сетевой сборки. Когда будет сделано существенное изменение, эта команда может сообщить вам об этом, и вы сможете запустить установку или сценарий для копирования файлов.

После того, как вы получили релиз, вы можете поместить их в GAC, чтобы вам не пришлось беспокоиться о копировании их в папки вашего проекта.

Другое решение, предполагающее, что вы используете сервер сборки или какую-либо непрерывную интеграцию, состоит в том, чтобы выполнить этап после сборки или этап обработки файлов. Чем в любой конкретный момент разработчики из других команд могли получить новые файлы или сделать так, чтобы скрипт или bat-файл извлекали их локально.

РЕДАКТИРОВАТЬ - ДРУГОЕ РЕШЕНИЕ Возможно, лучше спросить, почему у вас есть эти зависимости? Вы действительно нуждаетесь в них локально при создании вашей части приложения? Не могли бы вы смоделировать зависимости в вашем решении, позволяя вам кодировать, создавать и запускать модульные тесты? Фактическое приложение будет связывать их в ваших средах DEV / Test / Prod. Хранение вашего решения изолированным и независимым может быть лучшим решением для отдельной команды. Оставьте интеграцию и связь, когда приложение работает в реальных условиях.

1 голос
/ 08 июля 2010

( Не полный ответ, но все же: )
Любая доставка лучше хранится в файловом / двоичном хранилище, чем VCS, используемая для управления sources history.

Мы предпочитаем управлять этими поставками в репо, как Nexus , и мы используем maven для получения правильных зависимостей.
Даже если эти инструменты могут быть более ориентированными на Java, Nexus может хранить все что угодно, и maven только для чтения pom.xml каждого артефакта и вычисления правильных зависимостей.

...