2012-06-08 3 views
2

Я изучаю сборку с использованием MSBuild и запускаю их на моем недавно установленном сервере Jenkins CI.MSbuild - Что лучше всего добавлять в сторонние справочные библиотеки на сервере сборки?

Проблема, с которой я столкнулся, связана с внешними зависимостями, такими как Automapper.dll, и они не находятся на сервере сборки, поэтому моя сборка завершилась неудачей с помощью «Не удалось найти сборку« AutoMapper », которая понятна.

Я не уверен, как подойти к этому вообще. Я искал последние два дня на SO и Google, но в итоге все больше запутался. Должен ли я каким-то образом добавлять эти файлы в мое решение VS, или они должны быть в SVN где-то?

ответ

3

Самый простой и общий подход состоит в том, чтобы иметь папку lib\ в вашем источнике управления и ссылаться на них из вашего решения, используя относительные пути. Таким образом, сервер сборки может находить файлы так же, как и ваши машины разработки.

Один большой подход заключается в использовании NuGet для зависимостей пакетов. Team City от JetBrains уже поддерживает его из коробки.

Here's more info на NuGet в целом, а также показывает, как она работает в команде Город:

+0

Я использую SVN с папками для соединительных линий, ветвей и тегов. Я бы создал одну папку lib, в которой бы поделились все версии проекта в их соответствующих папках? –

+0

Вы должны держать его ближе к коду, так как возможно, вам, возможно, потребуется обновить внешнюю ссылку в одной ветви, но не другие. Я сохраняю папку libs на том же уровне, что и файл решения, и рассматриваю его как часть ветви кода I. –

+0

Yack! Сохранение двоичных файлов в исходном контроле - ОГРОМНАЯ трата пространства: разница между предыдущим двоичным файлом и новым двоичным файлом - это новый двоичный файл. – AlexeiOst

1

Машина CI должна быть способна строить проект с нуля. Это включает сторонние ссылки. По моему опыту, проще всего создать папку «ThirdParty» где-то в вашей структуре управления версиями и ссылаться на сборки из этой папки.

+0

@DMB Где я могу обратиться к третьей папке? В моем файле proj? Кроме того, можно ли ссылаться на него как «svn: // myRepo/libraries» и т. Д.? –

+0

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

0

Мы используем NuGet, который ставит все под папку «пакеты». Пока они все в одном месте, я думаю, с вами все будет в порядке.

Смежные вопросы