TFSBuild / MSBuild и ссылка на проект и ссылка на файл - PullRequest
7 голосов
/ 05 марта 2010

У нас есть большое решение для VS, использующее ссылки на проекты, которые создаются TFS Build следующим образом:

Solution
- Project 1
- Project 2
- Project ...
- Project N

Поскольку решение слишком большое, у нас есть несколько небольших решений, которые мы используем изо дня в день:

SubSolution
- Project 1
- Project 19

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

Это затем приводит к нарушению сборки TFS, которая не может найти эти ссылки на файлы, потому что они еще не были собраны (даже если проекты находятся в одном решении). Есть ли способ обойти это перетягивание каната между двумя типами ссылок. Как правильно разделить ваши решения?

Ответы [ 2 ]

2 голосов
/ 18 июня 2010

Независимо от того, как вы организовываете свою сборку, разработчики должны понимать, как работают ссылки , и знать, когда они вносят изменения в ссылки, что они не должны проверять эти изменения в , если они не собираются делать изменение процесса сборки .

По вопросу организации ваших сборок - как говорит Dmytrol, ссылки на проекты должны работать между решениями (если цель уже построена, однако это также относится и к ссылкам на файлы).

Мой совет - объединить ваши проекты в небольшие работоспособные решения и использовать ссылки на проекты в этих решениях. Ваш основной файл / сборка решения также может использовать ссылки на проекты, однако, если вы находите ссылки на проекты между небольшими решениями слишком сложными в обслуживании, вы можете вместо этого использовать ссылки на файлы и управлять порядком сборки через зависимости проекта или порядок сборки проекта (доступный в Visual Studio, щелкнув правой кнопкой мыши проект в вашем решении).

2 голосов
/ 18 июня 2010

Как правильно разделить ваши решения?

Ознакомьтесь с этой главой из руководства TFS от команды Patterns & Practices:

Глава 3 - Структурирование проектов и решений в Source Control

Обратите особое внимание на это примечание к сценарию «Размеченное решение» (который, я полагаю, вы на самом деле пытаетесь реализовать):

В отличие от предыдущих версий Visual Studio, Visual Studio 2005 использует MSBuild. Теперь можно создавать структуры решений, которые не включают в себя все проекты, на которые есть ссылки, и которые все еще создаются без ошибок. Пока мастер-решение было построено первым, генерируя двоичный вывод из каждого проекта, MSBuild может следовать ссылкам на проекты за пределами вашего решения и успешно строить. Это работает, только если вы используете ссылки на проекты, а не ссылки на файлы. Вы можете успешно создавать решения, созданные таким образом, из командной строки сборки Visual Studio и из IDE, но не с Team Build по умолчанию. Для успешной сборки с Team Build используйте главное решение, которое включает все проекты и зависимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...