2016-03-09 3 views
0

Название довольно много говорит обо всем. У меня есть проект, который использует некоторые пакеты nuget. Все загружаются, но два из них (HTMLAgilityPack и Newtonsoft) никогда не устанавливаются, то есть файл .nupkg не извлекается, поэтому требуемые .dll не могут быть найдены, и сборка завершается с ошибкой. Вот часть файла журнала сборки, показывающий, когда пакеты будут восстановлены на сервере сборки:Загрузка пакета Nuget, но не установлена ​​на TFS Build

Мишень «RestorePackages: (TargetId: 587)» в файле «## \ nuget.targets» из проекта «# # .csproj "(целевое значение" ResolveReferences "зависит от него):

Задача« Exec »пропущена из-за ложного состояния;

Задача "Exec" (TaskId: 360) Задание параметров: Command = "## \ nuget.exe" установить "## \ packages.config" -source "https://nuget.org/api/v2/" -RequireConsent -solutionDir «## \ Sources \»(TaskId: 360) Задание параметров : LogStandardErrorAsError = True (TaskId: 360) "## \ nuget.exe" установить "## \ packages.config" -source "https://nuget.org/api/v2/" -RequireConsent -solutionDir "## \ Sources \" (TaskId: 360)

Successfully installed '###.Utilities.Excel 1.0.0.0'. (TaskId:360) 
Successfully installed '###.Utilities.FileIO 1.0.0.1'. (TaskId:360) 
Successfully installed '###.Utilities.String 1.0.0.0'. (TaskId:360) 
All packages listed in packages.config are already installed. 

(TaskId: 360) Done исполняющие задача "Exec". (TaskId: 360) Готов построение целевого "RestorePackages" в проекте .: (TargetId: 587) "## csproj."

Как вы можете видеть, HTMLAgilityPack и Newtonsoft не устанавливаются как часть RestorePackages задача. Зачем собирать TFS, но не устанавливать эти пакеты?

+0

Если вы используете tfs 2015, пакеты nuget не поддерживаются. Вы можете им работать, но это сложно. – Claudius

+0

получается, что nuget.exe просто устарел. Проект был запущен кем-то еще 2 года назад, я добавил относительно новый пакет nuget, и старый nuget.exe не был совместим с ним –

ответ

0

Если кто-то еще сталкивается с этим, может случиться так, что nuget.exe, который вы используете для восстановления пакетов, устарел. В моем случае проект, над которым я работал, был запущен кем-то еще 2 года назад, я добавил относительно новый пакет nuget, и старый nuget.exe не был совместим с ним. Вы можете скачать последнюю версию nuget.exe here .

1

Как вы писали, старый nuget.exe сделает это.

То, что я делаю, это вывести «..nuget \ nuget.exe» из уравнения.

Я поместил nuget.exe на сервер сборки.

Я храню их, как это:

C:\MyProgFiles\NuGet\2.8.6\nuget.exe 
C:\MyProgFiles\NuGet\3.3.0\nuget.exe 

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

Тогда на моей сборки, я настроить сервер сборки, я по существу работать так:

"C:\MyProgFiles\NuGet\3.3.0\nuget.exe" restore c:\builds\1\SomeDirectory\MySolution.sln -NoCache 

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

Это (очевидно) восстановление пакетов.

Я использую «NoCache», потому что иногда у нашего частного кэша nuget есть вещи, которые были удалены ... которые кэшируются на сервере сборки. Nocache arg найдет эту проблему раньше, чем позже.