TFS Build 2013-не удается разрешить первичную ссылку


Я оцениваю TFS Build 2013 для использования в корпоративной среде. Сама TFs работает нормально уже много лет, и сегодня я настраиваю компоненты сборки. Пока никаких проблем.

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

Я запустил тестовую сборку и сразу же попал в проблему с первичной ссылкой. Ошибка в журналах:

C:Program Файлы (x86)MSBuild12.0binamd64Microsoft.Общий.CurrentVersion.цели (1697,5): предупреждение MSB3245: не удалось разрешить эту ссылку. Не удалось найти сборку " XYZ.файл DLL".

Итак, немного назад фона о том, как мы храним и используем ссылки: Мы создаем корневую папку для решения, внутри которой находится решение .sln-файлы и подкаталоги для проектов в обычном режиме. Затем мы добавляем папку "References" на этом уровне, которая содержит все библиотеки DLL, необходимые для проекта. Это, как правило, Библиотеки dll из других библиотек внутреннего кода, но также и некоторые сторонние библиотеки (например, старые библиотеки Библиотеки Enterprise Library DLL и все остальное, что мы не получаем от NuGet).

Каждый из проектов, которым требуются эти библиотеки DLL, ссылается на эту папку (и от проверки .proj файлы, которые я вижу, ссылка хранится как ".. СсылкиXYZ.dll файлы" и т. д. Это прекрасно работает для локальных сборок, и ни у кого никогда не было проблем. Папка reference регистрируется в TFS, и каждый получает копию. Из того, что я читал. пытаясь диагностировать нашу проблему, это довольно распространенный и общепринятый способ управления ссылками.

Итак, ошибка сборки, которую я получаю, как указано выше. В основном говоря, что цель сборки не может найти DLL из папки References. Журнал идет дальше, чтобы перечислить все места, которые он пытался найти.

Принципиально (казалось бы) первая строка гласит:

Для Пути Поиска " {HintPathFromItem}". Рассмотрен ".. СсылкиXYZ.dll", но этого не произошло существовать.

Кроме того, он выглядит в папке Framework, различных папках сборок по умолчанию, GAC и так далее, ни один из которых (конечно) не содержит его.

Так что мне интересно, где я ошибся. Я неправильно настроил одно из мест сборки / сброса? Существует ли какая-то другая конвенция для ссылки на требуемые библиотеки DLL (имея в виду, что вся наша компания использует "..References " настройка папки, или есть что-то еще?

Я довольно новичок в сборке TFS, но я ни в коем случае не новичок TFS или Visual Studio сам. Я провел около часа в Гугле, не найдя никого, кто испытывал бы ту же проблему, что и я, поэтому любая помощь была бы очень признательна.

Спасибо

Обновление:

Агент сборки настроен следующим образом:

Build Agent - рабочий каталог:

D:BuildAgent$(BuildAgentId)$(BuildDefinitionPath)

Определение сборки "исходные настройки" имеет (я предполагаю) значения по умолчанию:

Статус: Активное Папку | Управления Исходным Кодом: $/ProjectRoot | Создавать Папки Агента: $(Sourcedir Используется)

Статус: Замаскированную Папку | Управления Исходным Кодом: $/ProjectRoot/Капли | Создавать Папки Агента:

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

D:BuildAgent1ClientNameSolutionNamesrcDevEvolutionSourceSolutionName.РешениеСсылки

Если я открою команду VS2013 Приглашение, перейдите к папке, которая содержит .sln файл (а также папку References) и запустите "msbuild d:pathtoSolution.sln", то он успешно строится без предупреждений или ошибок.

1 3

1 ответ:

Ну, оказывается, это не было ошибкой с TFS вообще...

Проблемная библиотека DLL, хотя и присутствует в папке References, на самом деле не была проверена в TFS.

Щелкните правой кнопкой мыши папку References в VS (добавлена как "папка решения") и выберите Добавить существующий элемент, а затем возврат исправил проблему.

Таким образом, папка References использовалась, как и следовало ожидать, точно так же, как ее использует VS. MSBuild работал локально, потому что у меня был файл в моем локальном папка, но поскольку она не была частью решения, она не была с остальной частью источника.