Visual Studio 2019 Nuget не может найти пакет - PullRequest
0 голосов
/ 07 апреля 2020

В моем package.config есть эта запись:

<package id="xxxxxx" version="3.0.0" allowedVersions="[3.0,3.3)" targetFramework="net452">

Сейчас нет версии xxxxxxx в версии 3.0.0 (возможно, когда-то), но я разрешаю что-нибудь между 3.0 и 3.3. У меня есть пакет на 3.1.0, и я ожидал, что nuget найдет его и заберет, но я получаю ошибку

Невозможно найти версию 3.0.0 пакета xxxxxxxx

Вопросы:

  1. Почему Nuget не говорит: «О, я не могу найти 3.0.0, но мне разрешено использовать что-нибудь от 3.0 до 3.3, и я есть 3.1.0. Я буду использовать это! "
  2. Какая правильная конфигурация используется, чтобы она выбрала самую высокую доступную версию в допустимом диапазоне?

1 Ответ

0 голосов
/ 07 апреля 2020

В packages.config каждая зависимость указана с точным атрибутом version, который используется при восстановлении пакетов. Атрибут allowedVersions используется только во время операций обновления для ограничения версий, до которых может быть обновлен пакет.

Источник: https://docs.microsoft.com/en-us/nuget/concepts/package-versioning#references -in-project-files-packagereference

Если вы хотите использовать диапазоны в своем проекте, вам придется переключиться на Ссылки в файлах проекта (PackageReference), но имейте в виду:

NuGet 2.8.x и ранее выбирается последняя доступная версия пакета при разрешении зависимости, тогда как NuGet 3.x и более поздние версии выбирают самую низкую версию пакета.

Вариант всегда разрешать до самой высокой версии был предложен и отклонен: https://github.com/NuGet/Home/issues/1192

...