Как можно "восстановить nuget" загружать пакеты перед выпуском?
Мы столкнулись с проблемой в нашей среде сборки, где мы хотели бы, чтобы наши сборки непрерывной интеграции загружали "последние и самые большие" пакеты NuGet, которые помечены как предварительные выпуски, путем надлежащего добавления номера версии с помощью -dev
.
Всякий раз, когда мы запускаем команду nuget restore
, она не может забрать какие-либо предварительные версии. Я просмотрел документацию на странице NuGet Versioning, но довольно неудобно опускает подробные сведения о том, как добавить диапазоны предварительного доступа к разрешенным версиям, которые он должен загрузить в файле packages.config.
В настоящее время файл packages.config выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Foo" version="1.0.0" targetFramework="net35" />
</packages>
И мы хотим, чтобы NuGet, по крайней мере, смог увидеть, а затем выбрать последнюю версию из списка, например:
- Foo.1.0.0-dev1401291727ef87505.nupkg
- Foo.1.0.0-dev14012918064fdf488.nupkg
К сожалению, никаких предварительных версий не видно, и только восстановленные пакеты используются процессом восстановления. Типичное сообщение об ошибке при попытке загрузить пакет с предварительным выпуском:
Unable to find version '1.0.0' of package 'Foo'.
Есть ли способ указать диапазон версий, который включает в себя пакеты перед выпуском в файле packages.config? Или даже из самого файла .nuspec?
Большое спасибо заранее.
Ответы
Ответ 1
Нет никакого способа, чтобы AFAIK указывал использовать пакеты перед выпуском в пределах packages.config
. Вместо этого используйте флаг -InstallPrerelease
(PowerShell) или Prerelease
(command-line nuget.exe), чтобы указать, что пакеты перед выпуском/бета-версиями должны быть установлены в соответствии с стабильными пакетами.
Обратите внимание, что Foo.1.0.0-dev1234
считается раньше, чем Foo.1.0.0
, поэтому, если стабильный пакет существует (Foo.1.0.0
), то пакеты Foo.1.0.0-xxxx
beta/pre-release не будут установлены. В таком случае вам нужно обновить бета-версию до (скажем) Foo.1.0.1-devxxxx
, чтобы ее можно было найти как "более новую", чем Foo.1.0.0
.
Подробнее см. здесь Как опубликовать пакет версии nuget preerelease
Ответ 2
Чтобы указать предварительную версию, обязательно отметьте ее в версии package.config:
<package id="Foo" version="1.0.0-dev1401291727ef87505" />
Диапазоны версий задаются с помощью атрибута allowedVersions.
Чтобы проверить наличие обновлений пакетов предварительного доступа (не только стабильных), в диалоговом окне "Управление пакетами NuGet" выберите "Включить предварительную проверку" в раскрывающемся списке "Стабильный".
Ответ 3
nuget.exe restore
загрузит точную версию, указанную в файле packages.config. Вам нужно будет использовать update-package
для обновления установленных пакетов до последней версии.