2014-09-16 1 views
0

Я использую Stamp.Fody пакет nuget для штамповки моей сборки .Net. Он имеет Fody в качестве зависимого пакета nuget. Jenkin - наш сервер непрерывной интеграции. Для создания .NET-решения используется вызов командной строки MSBuild.msbuild не восстанавливается только пакет fody nuget

После запуска командной строки msbuild появляется следующая ошибка.

"C: \ Source \ Demo.sln" (цель по умолчанию) (1) -> "C: \ Source \ Demo.UI.csproj" (цель по умолчанию) (2) -> C : \ Source \ Demo.UI.csproj (185,5): Ошибка: этот проект ссылается на пакеты (ы) NuGet, отсутствующие на на этом компьютере. Включите восстановление пакета NuGet, чтобы загрузить их. Для дополнительная информация, см. http://go.microsoft.com/fwlink/?LinkID=322105. Отсутствует файл .. \ packages \ Fody.1.25.0 \ build \ Fody.targets.

При работе с IDE Visual Studio, если отсутствует Fody или любые другие пакеты nuget, сам менеджер пакетов Visual Studio сам восстанавливает все пропущенные пакеты.

Интересно, если я запустил командную строку MSBuild после удаления пакетов NUnit, Prism и Fody nuget и очистки кеша пакета Nuget, кроме пакета Fody nuget, все остальные пакеты (NUnit и Prism) успешно восстановлены. Но не Фоди.

В соответствии с ссылкой NuGet Package Restore does not fetch Build Target Assemblies (Tools) Я понял, что была проблема с загрузкой nuget со всеми версиями пакетов Fody nuget до версии 1.13.0.0. Также, как указано в этой ссылке Я добавил ссылку на пакет Fody nuget для всех проектов в моем решении и попытался построить решение, но он снова завершил сбой сборки. (У меня нет предыдущих версий, поэтому нет необходимости удалять что-либо из папки «Инструменты»/«Фоди» - как указано в разделе readme.txt)

Я проверил все остальные известные известные случаи и не добился успеха.

Я не знаю, что я здесь отсутствует. Может ли кто-нибудь помочь мне в этом, пожалуйста?

ответ

4

Рекомендуемый подход к NuGet пакетов является использование автоматического пакета восстановления до того сборки, а не во время сборки. При использовании с MSBuild вы можете использовать опцию восстановления (доступную в Nuget версии 2.7 и выше) до начала фактической сборки, которая будет загружать все пакеты nuget, которые использует ваше решение.

Более подробную информацию можно найти на сайте package restore и, в частности, раздел, который говорит из командной строки Пакет Восстановление завернутые в MSBuild

Этот подход работает не только на основе Дженкинс CI, но и для TFS или любых других CI серверов. Автор пакета Fody Simon рекомендует то же самое approach

+0

Jeyanth, большое спасибо за ваш ответ. Я больше доволен вашим ответом, так как мне просто нужно указать решение .Net, чтобы загрузить все пакеты в моем приложении. Поэтому я могу использовать команду, указанную в вышеупомянутой ссылке, и поместить ее в Jenkin, как упоминал @Sean. Спасибо за решение проблемы очень просто. – Elangesh

2

В зависимости от того, как ваша работа по строительству структурирована в Jenkins, вы можете выполнить очень простую партию во время шагов сборки. enter image description here

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

..\.nuget\NuGet.exe Install <your-package-to-restore> -OutputDirectory ..\packages 
+0

большое спасибо за ваш ответ. Это действительно помогает решить проблему. – Elangesh