Team Build имеет фазу «начальной загрузки», когда все содержимое папки конфигурации Team Build (папка с TFSBuild.proj) загружается из системы управления версиями. Это выполняется агентом сборки до того, как агент сборки вызовет MSBuild.exe и сообщит ему о запуске TFSBuild.proj.
Если вы переместите файл целей из-под SolutionRoot и поместите его в папку конфигурации рядом с файлом TFSBuild.proj, вы сможете импортировать его в файл TFSBuild.proj, используя оператор относительного импорта, т.е.
<Import Project="myTeamBuild.targets"/>
Если эти цели зависят от каких-либо дополнительных пользовательских сборок задач MSBuild, то вы также можете разместить их в той же папке, что и ваш файл TFSBuild.proj, и легко ссылаться на них, используя относительный путь.
Обратите внимание, что в TFS2008 папка конфигурации сборки по умолчанию находится в каталоге $ / TeamProject / TeamBuildTypes, однако это не обязательно должно быть там. Он может фактически находиться в папке, которая находится внутри вашего решения, и даже может быть проектом в вашем решении, посвященном Team Build. Это имеет несколько преимуществ, в том числе упрощение ветвления сборки. Поэтому, как правило, моя сборка находится в такой папке:
$/TeamProject/main/MySolution/TeamBuild
Также обратите внимание, что по умолчанию на этапе начальной загрузки сборки агент сборки будет загружать только те файлы, которые находятся в папке конфигурации сборки, и не будет записываться ни в какие подпапки. Если вы хотите, чтобы файлы включались в подпапки на этапе начальной загрузки, вы можете установить следующее свойство в appSettings файла tfsbuildserver.exe.config на компьютерах агента сборки (находится в% ProgramFiles% \ Visual Studio 9.0 \ Common7 \ IDE \ PrivateAssemblies)
<add key="ConfigurationFolderRecursionType" value="Full" />
Обратите внимание, что если у вас было несколько агентов сборки, вы должны были бы не забыть установить этот параметр на всех машинах, и это повлияет на каждую сборку, выполняемую этим агентом сборки - так что на самом деле лучше всего сохранять файлы в корень папки конфигурации сборки, если можете.
Удачи,
Martin.