Версии зависимостей пакета Nuget

Скажем, я создаю новую библиотеку, которая обертывает сервис отдыха с помощью RestSharp.

Я создаю nuspec и публикую в фиде nuget, а списки зависимостей как ...:

...
<d:Dependencies>RestSharp:105.2.3</d:Dependencies>
...

Теперь я иду и ссылаюсь на этот пакет в проекте, в котором уже есть ссылка на RestSharp.

Выходит обновление RestSharp, теперь это версия 1.6.1, и я обновляю свой проект (но не пакет nuget, который по-прежнему указывает 105.2.3 как зависимость).

Он компилируется, и все в порядке.

Однако, когда я пытаюсь запустить свою библиотеку из обновленного кода, я получаю эту ошибку ...:

System.IO.FileLoadException: не удалось загрузить файл или сборку RestSharp, Version = 105.2.3.0, Culture = нейтральный, PublicKeyToken = null или одну из его зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку.

Как я могу указать в моем пакете nuget, что мне просто нужен МИНИМУМ 105.2.3, но любая более новая версия также подойдет?


person Kjensen    schedule 13.11.2017    source источник


Ответы (1)


Фрагмент указанного вами файла .nuspec кажется мне немного странным. Я никогда не видел пространство имен d, а зависимости - это родительский узел, который должен содержать элемент dependency для каждого отдельного пакета, на который вы нацеливаетесь.

Затем вы упоминаете, что новая версия - 1.6.1, которая должна быть 106.1.0. Поскольку первая часть версии (105> 106) увеличилась, мы говорим о большом приращении. Обычно это означает критическое изменение публичного API. Обычно клиент не может безопасно обновить пакет с большим шагом без изменения программного обеспечения.

Я думаю, абзац Cousin dependencies описывает проблему, с которой вы столкнулись.

В вашем случае я бы предложил создать новую версию вашей «оболочки» NuGet-пакета. Обновите зависимость RestSharp, чтобы требовалась версия 106.1.0 или, по крайней мере, та же версия, на которую вы ссылаетесь напрямую. Вы можете установить атрибут версии, например, на [106.1,107). Это будет означать, что подойдет любая версия 106.1 и выше, до (исключительной) 107.x.

Атрибут version элемента зависимости позволяет использовать особый синтаксис для определения определенной стратегии управления версиями. Ознакомьтесь с документацией NuSpec в Microsoft.

Вот также список возможных диапазонов версий. с соответствующим синтаксисом.

person Emiel Koning    schedule 28.11.2017