Перезаписывать пакеты nuget в ленте сервисов Visual Studio Team
При использовании
nuget.exe push \\share\Packages\*.nupkg -Source "https://myvsts.pkgs.visualstudio.com/_packaging/tcpcm/nuget/v3/index.json" -ApiKey VSTS
я получил
Код статуса ответа не указывает на успех: 409 (конфликт).
ошибка
Есть ли способ перезаписать все пакеты, которые уже были загружены?
4 ответа
Есть ли способ перезаписать все пакеты, которые уже были загружены?
Простой ответ - нет. Ответ Джонатана Майерса указал на правильный документ: " Поймите неизменность пакетов".
Когда вы публикуете конкретную версию пакета в фиде, этот номер версии зарезервирован на постоянной основе. Вы не можете загрузить более новый пакет редакции с тем же номером версии или удалить его и загрузить новый пакет с той же версией.
Это потому, что многие клиенты пакетов, включая NuGet, хранят локальный кеш пакетов на вашем компьютере. После того, как клиент кэшировал определенный package@version
, он вернет эту копию при будущих запросах на установку / восстановление. Если на сервере вы заменяете package@version
(ред. 1) с новым package@version
(версия 2), клиент не может определить разницу. Это может привести к неопределенным результатам сборки на разных машинах.
Таким образом, мы не могли перезаписать все пакеты, которые уже были загружены, даже мы не могли удалить их и повторно загрузить. Чтобы решить эту проблему, единственный способ - загрузить пакеты с новой версией.
Попробуйте добавить ?replace=true
в конце URL. В качестве альтернативы вы можете попробовать AllowOverwriteExistingPackages=true
,
Я не уверен, если visualstudio.com
уже поддерживает это, но именно так это работает в случае сервера NuGet от Octopus Deploy.
Вероятно, это не лучшая практика, но если вам нужно обновить ту же версию, вы всегда можете сначала удалить пакет, а затем отправить обновленный пакет с той же версией.