2013-09-12 6 views
3

Недавно я начал внедрять автоматическую сборку для нашего программного пакета с использованием TFS. Я пытаюсь установить как можно меньше на сервере сборки и хотел бы избежать проверки в сторонних библиотеках в нашем исходном репозитории.Пакет восстановления TFS NuGet не работает - Microsoft.webapplication.targets

Один из наших проектов не может строить с с отсутствующей зависимостью:

<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" /> 

Это не удивительно, так как у меня нет Visual Studio (или Team Explorer и т.д.), установленный на сервере сборки. Чтобы обойти эту проблему, я пытаюсь использовать NuGet с автоматическим восстановлением пакетов, чтобы предоставить соответствующую библиотеку (MSBuild.Microsoft.VisualStudio.Web.targets). Я прочитал массу сообщений как здесь, так и в других местах, но не смог заставить это работать должным образом. В принципе, я:

  1. Установка переменной окружения на сервере сборки: EnableNuGetPackageRestore = истина
  2. следуют инструкциям по адресу: http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
  3. Добавлен все файлы в SolutionDir.nuget в хранилище TFS.
  4. Добавьте папку пакетов и respositories.config в репозиторий TFS.
  5. Проверено, что ссылка nuget.targets указана из проекта-нарушителя.
  6. Убедитесь, что для параметра «RestorePackages» установлено значение true в проекте-нарушителе.
  7. Сложил все эти предметы и поставил в очередь частную сборку с соответствующим полкой.

Сборка выполняется, но пакеты nuget никогда не загружаются. Кроме того, я не вижу никаких записей в журнале для любого «RestoreCommand» (или других элементов из nuget.targets) в файле журнала сборки. Это похоже на nuget.targets полностью игнорируется. Я надеюсь, что я просто слишком долго смотрел на это и пропустил какой-то простой шаг.

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

+0

Как вы установили переменную окружения? Вы уверены, что это не для пользователя, и вы отказываетесь от машины, чтобы обеспечить ее применение ко всем процессам и т. Д.? –

ответ

1

Я знаю, что это старый вопрос, но вот как я получил эту работу.

Я следовал инструкциям здесь, так что я не должен добавить папку пакетов в TFS: http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

Затем я должен был использовать простую сборку файл, описанный в этой ссылке http://docs.nuget.org/docs/reference/package-restore-with-team-build, которая просто запускает пакет восстановления заранее.

Все, что мне нужно было изменить из файла сборки, это путь к моему файлу решения, а nuget.exe - как мой.

Затем я сконфигурировал TFS для использования файла build.proj, а не для решения.

Обратите внимание, что я также обновился до nuget 2.7, поэтому мне не пришлось включать файл .targets.