Вопрос

Каков правильный способ включить выходной сигнал одной сборки в качестве бинарного файла в другой сборке?

Допустим, у меня есть решение под названием CompanyName.domain (мой доменный слой). Я создан как сборка, и он строится ночью.

Теперь я хочу добавить решение под названием SomeProject.Web. И я хочу включить бинар из компании имени компании в папку двоичных файлов на уровне сверстников с моим решением. Затем проект некоторых процессов. ВЫ Ссылка на Binary CompanyName.Domain.DLL будет работать.

Каковы лучшие практики для этого? Я знаю кого -то, кто сказал, что они пытаются сделать это с ветвлением. Я новый «контроль источника». Но что -то в этом звучит неправильно.

Это было полезно?

Решение

Так же, как Дэрил, мы используем папку «двоичные», из которой мы ссылаемся на двоичные файлы. Наши «библиотеки» создают только xcopy результаты в местоположении двоичных файлов, поэтому, если мы хотим обновить библиотеки, мы просто проверяем двоичные файлы, построить и проверяем их снова.

Это позволяет нам поделиться всеми нашими внутренними библиотеками (а также любыми сторонними библиотеками, которые мы используем) из одного стандартизированного места, и все наши библиотеки могут быть предварительно построены, сохраняя наши разработчики, необходимые для их создания, если они на самом деле ничего не меняют в либера

Позаботьтесь о том, чтобы только ссылочные сборки выпуска ваших библиотек (единственное исключение, которое мы имеем в этом, заключается в том, что у нас есть библиотека отладчиков, которые условно скомпилированы только в сборки отладки, и мы должны ссылаться на версию отладки, в противном случае все наши отладка Скомпилируется из программы даже в сборке отладки!)

Последнее примечание: избегайте ветвления, если нет разумной альтернативы.

Другие советы

Моя компания делает это, создавая папку «ссылки», чтобы удерживать все файлы .dll, необходимые для создания извне в сборах, поскольку папка Bin фактически не сохранена под управлением источника.

Мы используем TFS Репликатор зависимости, который может копировать файлы в любой проект в TFS после создания проекта. У него нет очень хорошей документации, но, похоже, он делает то, что должно было после того, как вы получите его настройку.

Пост в блоге Реализация репликации зависимостей с помощью сборки команды TFS Рекомендует создать сценарий ветвления, чтобы помочь с отслеживанием, какие проекты используют, какие зависимости, что также имеет для меня смысл.

Мой процесс похож на процесс других плакатов.

Скажем, у меня есть два проекта, назовите их CoreProject и AppProject. CoreProject является общим. AppSproject имеет папку под названием Sharedbinaries. Вот где все ссылки на сборку указывают.

Мой скрипт TFSBuild для CoreProject настроен на следующее:

-Поседать последнее

-Билд падение в зону (что -то вроде server dropzone coreprojectbuildnamandnumber)

-Drop скопирован в папку в зоне выброса (что -то вроде server dropzone andal coreProject)

Сценарий TFSBuild для AppProject настроен на выполнение следующего:

-Поседать последнее

-Карируйте файлы в папке Sharedbinaries

-Copy файлы от server dropzone andal coreproject

-Строить

-Drop, чтобы сбросить зону (что -то вроде server dropzone approjectbuildnameandnumber)

-Если сборка успешна, сборка копируется в зону выпадения папки (что -то вроде server dropzone andal approject), а файлы в Sharedbinaries проверяются в

-Если сборка не удается, файлы, скопированные в Sharedbinary

Я обнаружил, что это работает очень хорошо. AppProject всегда строится с самыми современными битами от CoreProject, поэтому мы сразу знаем, есть ли нарушенное изменение. Проверяя Sharedbinaries в TFS, я могу получить определенную версию и запустить код с теми же DLL от CoreProject, которые использовались в то время. Кроме того, мне просто нужно получить последний, и моя местная машина также строит с последними битами.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top