Перезаписывать пакеты 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.

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

Команда удаления NuGet

Другие вопросы по тегам