2014-02-14 4 views
6

Я создаю проект в TeamCity с включенным восстановлением пакета NuGet.Шаг этапа установки TeamCity NuGet

У меня есть два шага сборки:

  • NuGet инсталлятор
  • MSBuild

Один из проектов имеют log4net-пакет с официальным подачи установленным. (Но не в зацикливаться на каком пакете)

Моя проблема когда TeamCity запускает первый шаг, он терпит неудачу на этапе NuGet-инсталлятор с сообщением: Невозможно найти версию «2.0. 3 'пакета' log4net '.

Так после того, как делать все возможное, чтобы найти какие-либо ошибки в решении, я стараюсь:

  1. Отключить шаг NuGet Installer
  2. Выполнить мой билд - , который, очевидно, терпит неудачу, потому что не имеет пакетов (смотри ниже)
  3. Включить шаг NuGet Installer
  4. ReRun построить

[Изменить] Что касается 3-го шага, MSBuild в идеале, как указывает Джон Х., сможет перестроить пакеты, поэтому мне не понадобится шаг установщика NuGet. Ошибка, когда я пытаюсь построить решение без шага установки nuget, имеет какое-то отношение к пакету OctoPack, который я установил:

OctoPack не может быть запущен, потому что пакеты NuGet были восстановлены до запуска сборки, а цели файл был недоступен, когда сборка началась. Пожалуйста, снова создайте проект, чтобы включить эти пакеты в сборку. Вам также может потребоваться убедиться, что ваш сервер сборки не удаляет пакеты до каждой сборки.

Тогда это преуспевает. Почему?

У кого-нибудь есть представление о моей проблеме?

Некоторые более фона:

Я предполагаю, что это что-то делать с пакетом осьминога развертывания. У меня есть плагин octopus deploy, установленный на сервере teamcity, и я установил флажок «Выполнить OctoPack» на шаге MSBuild.

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

Может быть, восстановление NuGet-пакета на шаге MSBuild в сочетании с плагином осьминога вызывает мои проблемы?

[Частичное разрешение] Я все еще не уверен, почему я получил ошибку в лог4net-пакете. Я запускал установщик NuGet в качестве первого шага в моей автоматической сборке, которая, в конце концов, оказалась правильной вещью, связанной с природой сборки.

Я признаю, что я не (всегда) читаю «что нового», когда пакет обновляется. При обновлении Octopack с 2.0.26 - 3.0.19 одно из изменений заключается в том, что вам больше не нужно проверять папку .octopack. Так что я мог бы действительно понять, почему сборка не может найти Мишени-файл, когда он был установлен в

Теперь я:.

  • повышен до Octopack 3
  • удалили .octopack папку из контроль версий
  • (снова) включен этап NuGet установки в TeamCity

и сборка работает нормально.

Спасибо за помощь! Я лучше образованный человек сейчас :)

[Удалено] неактуальной информации

+1

Является ли пункт «установщика NuGet» явно для восстановления пакетов для шага MSBuild? Правильно настроенный шаг MSBuild должен иметь возможность восстанавливать пакеты без какой-либо помощи. Выполняет ли протокол MSBuild любые ошибки NuGet? –

+0

Привет, Джон, спасибо, что указали это. Когда я отключу шаг восстановления пакета и запускаю сборку, которая не работает, ошибка фактически связана с другим пакетом OctoPack. «OctoPack не может быть запущен, потому что пакеты NuGet были восстановлены до запуска сборки, а файл целей был недоступен при запуске сборки. Пожалуйста, снова создайте проект, чтобы включить эти пакеты в сборку. Возможно, вам также необходимо убедиться, что ваша сборка сервер не удаляет пакеты перед каждой сборкой ». Я смотрю на это .. – HaraldV

+1

Я получаю то же самое здесь, используя ContinuiCI, который создает новую копию исходной папки для каждой сборки. Если я прочитаю это право, это означает, что пакеты будут восстановлены для каждой сборки? –

ответ

3

Решение для запуска NuGet восстановления до шага, который находится в ведении MSBuild восстановления.

Шаг MSBuild останавливается, если требуется восстановить пакеты. Выполнение восстановления до запуска MSBuild предотвращает невозможность восстановления. Это решение обсуждается в this .NET Framework Blog article.

Ответ от команды Octopus Deploy: here.

Такая же проблема может привести к сбою TFS - см. Ответ RinoTomhere. Я использую Continua CI и добавил шаг командной строки для запуска восстановления Nuget до этапа MSBuild.

Смежные вопросы