2014-02-14 7 views
0

У нас есть файл MSBuild .proj, который используется для создания и запуска множества проектов. У них есть ссылки на файлы друг другу. В связи с тем, что это ссылки на файлы, мы поддерживаем список зависимостей проекта от решения, так что MSBuild может идентифицировать заказ для выполнения проектов.MSBuild - Зависимости от проекта Построение порядка аномалии

Недавно у нас была проблема, когда наша команда разработчиков в США добавила новую ссылку на один проект, но не обновила список зависимостей. Это прекрасно подходит для них локально и на сервере. Однако для британской команды сборка последовательно не удалась для всех разработчиков.

Я пытаюсь понять, почему это так. Единственное, что я могу придумать, это то, что наша культура заставляет порядок сборки немного отличаться, когда два проекта по существу занимают одно и то же место. т. е. если предполагается, что в проектах А и В одинаковые зависимости, то порядок, в котором они строятся, произвольно определяется, и это может быть различным в культуре Великобритании против американской культуры.

Тем не менее, моя машина (она сломалась для меня) имеет формат Region, установленный на английском языке. И местоположение Великобритании.

Звучит ли это? или есть лучшее объяснение этому?

ответ

0

Изменение культуры не будет устранять проблему, когда вы создаете ссылку на файл на выходе компонентов, а не ссылку на проект для проекта, который будет строить сборку.

Файлы решений выполняют отображение зависимостей и помогут определить порядок сборки MsBuild. Когда MsBuild обрабатывает решение, он сначала преобразует его в память в формат MsBuild xml, затем будет определять порядок проекта, перечисляя зависимости, а затем определять, нужно ли перестраивать проект, сравнивая последнее время обновления входных файлов с выходом файлы.

Если у вас есть ссылка на проект в проекте (в проекте откройте папку «Ссылки», удалите ссылки на выходные сборки и вместо этого обратитесь к самому проекту). Это изменяет файл проекта, заменяя группы элементов позиции группами элементов ProjectReference. Это позволяет MsBuild сделать это определение на уровне проекта и решить проблему необходимости вручную настроить порядок сборки проекта.

+0

К сожалению, по ряду причин ссылки на проект, как правило, не используются в нашем решении. У нас есть сотни проектов, которые обычно открываются с использованием разных решений для сборки. Soln-Projects в одном из этих решений использует ref ref, но ссылки между разделами используют ссылки на файлы. –

+0

Итак, если проект A зависит от результата проекта B, но использует ссылку на файл, а не ссылку на проект, вы не узнаете, есть ли у вас самый последний код из проекта B во время компиляции. Это просто какая-то сантехника, которую вы можете добавить, чтобы сделать вашу жизнь проще. Мне приходилось делать это в прошлом на решениях, включающих> 100 проектов. Это похоже на сложную задачу, но сэкономит вам много горя, больше не цепляясь за ошибочную парадигму :) – Nicodemeus

+0

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

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