PackageReference Управление версиями Wildcard csproj - PullRequest
0 голосов
/ 14 сентября 2018

В моем проекте NetStandard есть следующее

<ItemGroup>
<PackageReference Include="MyReference" Version="1.0.*" />
</ItemGroup>

Когда я изменяю его на использование подстановочного знака (вместо 1.0.1), я получаю восклицательный знак на переключателе зависимостей, затем переключение NuGet и, конечно, сам пакет.

Когда я регистрируюсь, сборка CI также не работает на другом конце, давая мне

Невозможно найти пакет MyReference. В источниках нет пакетов с этим идентификатором: автономные пакеты Microsoft Visual Studio, nuget.org

Все вышеперечисленные проблемы исчезают при использовании актуальной версии без подстановочного знака (1.0.1), но я хочу убедиться, что .NET Core Restore Task всегда восстанавливает последний пакет, и я надеялся, что простой подстановочный знак сделает это.

NB. Я использую собственный частный репозиторий NuGet (расширение управления пакетами)

Пожалуйста, сообщите.

Почему при сборке CI не удается использовать подстановочный знак, указывающий, что он не может найти пакет?

Допустим, у меня развернут проект1 в моем собственном репозитории NuGet. Project2 зависит от Project1, который был добавлен как пакет NuGet в Project2. Пакет Project1 находится без проблем и ошибок в моем собственном репозитории.

Когда я использую подстановочный знак и строю локально, он работает и восстанавливает последнюю версию. Когда я регистрирую изменения кода (с подстановочным знаком, оставленным в .csproj) - сборка CI завершается неудачно с вышеупомянутым сообщением об ошибке.

1 Ответ

0 голосов
/ 14 сентября 2018

Согласно официальному документу

При использовании формата PackageReference NuGet также поддерживает использование подстановочных знаков *, для Major, Minor, Patch и предварительной версиисуффикс части номера.Подстановочные знаки не поддерживаются в формате packages.config.

По вашему вопросу

Всегда указывайте версию или диапазон версий для зависимостей пакетов в файлах проекта, packages.config файлахи .nuspec файлы.Без версии или диапазона версий NuGet 2.8.x и более ранних версий выбирает последнюю доступную версию пакета при разрешении зависимости, тогда как NuGet 3.x и более поздних выбирает самая низкая версия пакета .Указание версии или диапазона версий позволяет избежать этой неопределенности.

...