Проблема с шагом установщика TeamCity NuGet

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

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

  • Установщик NuGet
  • MSBuild

В одном из проектов установлен пакет log4net из официального канала. (Но не забывайте, какой пакет)

Моя проблема в том, что когда TeamCity запускает первый шаг, он терпит неудачу на этапе установки nuget с сообщением: Не удалось найти версию «2.0.3» пакета «log4net».

Поэтому, приложив все усилия, чтобы найти какие-либо ошибки в решении, я пытаюсь:

  1. Отключить шаг установщика NuGet
  2. Запустите мою сборку - , которая явно терпит неудачу, потому что у нее нет пакетов (см. Ниже)
  3. Включите шаг установщика NuGet
  4. Повторить сборку

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

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

Тогда это удается .. Почему?

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

Еще немного предыстории:

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

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

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

[Частичное разрешение] Я все еще не уверен, почему я получил ошибку в пакете log4net. Я запускал установщик NuGet в качестве первого шага в моей автоматической сборке, что в конечном итоге оказалось правильным из-за характера сборки.

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

Теперь у меня:

  • обновлен до Octopack 3
  • удалил папку .octopack из контроля версий
  • (снова) включил шаг установки nuget в teamcity

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

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

[Удалено] не относящаяся к делу информация


person HaraldV    schedule 14.02.2014    source источник
comment
Является ли цель шага «Установщик NuGet» явно восстанавливать пакеты для шага MSBuild? При правильной настройке шаг MSBuild должен иметь возможность восстанавливать пакеты без какой-либо помощи. Регистрирует ли шаг MSBuild какие-либо ошибки NuGet?   -  person John Hoerr    schedule 14.02.2014
comment
Привет, Джон, спасибо, что указал на это. Когда я отключаю этап восстановления пакета и запускаю сборку, которая завершается неудачно, ошибка на самом деле касается другого пакета OctoPack. OctoPack не может быть запущен, потому что пакеты NuGet были восстановлены до запуска сборки, а целевой файл был недоступен при запуске сборки. Пожалуйста, соберите проект еще раз, чтобы включить эти пакеты в сборку. Вам также может потребоваться убедиться, что ваш сервер сборки не удаляет пакеты перед каждой сборкой. Я займусь этим ..   -  person HaraldV    schedule 15.02.2014
comment
Я получаю то же самое здесь, используя ContinuiCI, который создает новую копию исходной папки для каждой сборки. Если я правильно это читаю, значит, пакеты будут восстанавливаться для каждой сборки?   -  person Sean Kearon    schedule 16.02.2014
comment
Я вернулся с Octopack 3.0.19 на 2.0.26, и проблема исчезла. Я сообщил об этом Octopus здесь: help.octopusdeploy.com/discussions/problems/   -  person Sean Kearon    schedule 16.02.2014
comment
Привет, Шон, я тоже установил 2.0.26, теперь он собирается. Без шага установщика NuGet, как указал Джон.   -  person HaraldV    schedule 17.02.2014
comment
Теперь Шон получил ответ от поддержки развертывания Octopus по его проблеме, они предлагают запустить установщик NuGet в качестве первого шага, потому что, как они заявляют: Эта ошибка произошла, потому что, когда MSBuild запускал решение, OctoPack.targets отсутствовал (восстановление пакета NuGet еще не было бегать). Поскольку цели не могут быть загружены, OctoPack не может работать .. Преследуя свой хвост здесь, я вернулся к исходной проблеме, почему не удается выполнить этап восстановления nuget?   -  person HaraldV    schedule 17.02.2014


Ответы (1)


Решение состоит в том, чтобы запустить восстановление Nuget перед этапом восстановления, выполняемым MSBuild.

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

Ответ от команды Octopus Deploy: здесь.

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

person Sean Kearon    schedule 17.02.2014