Недавно я начал внедрять автоматическую сборку для нашего программного пакета с использованием TFS. Я пытаюсь установить как можно меньше на сервер сборки и хотел бы избежать проверки сторонних библиотек в нашем исходном репозитории.
В одном из наших проектов происходит сбой сборки с отсутствующей зависимостью:
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
Это неудивительно, так как у меня не установлена Visual Studio (или Team Explorer и т. д.) на сервере сборки. Чтобы обойти эту проблему, я пытаюсь использовать NuGet с автоматическим восстановлением пакетов, чтобы предоставить соответствующую библиотеку (MSBuild.Microsoft.VisualStudio.Web.targets). Я прочитал тонну сообщений как здесь, так и в других местах, но не смог заставить это работать должным образом. В основном я:
- Задайте переменную среды на сервере сборки: EnableNuGetPackageRestore=true.
- Следуйте инструкциям по адресу: http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
- Все файлы из SolutionDir.nuget добавлены в репозиторий TFS.
- Добавьте папку пакетов и файл respositories.config в репозиторий TFS.
- Подтверждено, что на nuget.targets ссылался проект-нарушитель.
- Проверено, что для параметра "RestorePackages" в проблемном проекте задано значение true.
- Отложил все эти предметы и поставил в очередь частную сборку с нужным набором полок.
Сборка запускается, но пакеты nuget никогда не загружаются. Кроме того, я не вижу записей журнала для какой-либо «RestoreCommand» (или других элементов из nuget.targets) в файле журнала сборки. Это похоже на то, что nuget.targets полностью игнорируется. Я надеюсь, что просто слишком долго смотрел на это и пропустил какой-то простой шаг.
Изменить: я должен был упомянуть, что решение отлично работает на локальной машине. Я обновил ссылки на проекты, чтобы они ссылались на библиотеки из NuGet. Если я удалю все локальные пакеты, он их загрузит и соберет правильно.