Cake build.ps1 не удается установить Cake
Мы используем стандартный скрипт PowerShell build.ps1, поставляемый с Cakebuild.net
Он отлично работал как на CI, так и на машинах разработчиков, но для одного из наших разработчиков при запуске build.ps1 мы получаем следующую ошибку
Unable to find package 'Cake'
И затем выходит, проверяя папку инструментов, там не установлен Cake.
1 ответ
Вы получаете ошибку, потому что консоль NuGet не может найти пакет Cake среди настроенных каналов на машине.
Вы можете проверить эту теорию, изменив следующую строку в build.ps
$NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$TOOLS_DIR`""
к
$NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$TOOLS_DIR`" -Source `"https://www.nuget.org/api/v2`""
Если это работает, возможно, у вашего коллеги нет машины или на его машине отключены стандартные каналы nuget.org.
Вы можете перечислить, какие источники вы настроили, используя консоль NuGet, как это (если у вас нет консоли nuget в пути, она должна быть доступна в папке инструментов репо)
nuget sources list
Затем он должен перечислить ленту v2 и / или v3 для nuget.org, и они должны иметь текст [Enabled]
после них как ниже
Registered Sources:
1. https://www.nuget.org/api/v2/ [Enabled]
https://www.nuget.org/api/v2/
2. https://api.nuget.org/v3/index.json [Enabled]
https://api.nuget.org/v3/index.json
Если они перечислены, но отключены, вы можете включить их, набрав
nuget source enable -Name https://www.nuget.org/api/v2/
Или же
nuget source enable -Name https://api.nuget.org/v3/index.json
В зависимости от того, какой канал вы зарегистрировали и отключили, если источники отсутствуют, вы можете добавить их, набрав
nuget sources add -Name https://www.nuget.org/api/v2/ -Source https://www.nuget.org/api/v2/
Настройки хранятся в %AppData%\NuGet\NuGet.config
так что вы можете вручную редактировать этот файл, чтобы убедиться, что все используют одни и те же источники в команде, вы можете добавить NuGet.config
в корень репозитория, поскольку nuget пытается найти конфигурацию в пути, а затем возвращается к данным приложения.