Как остановить установку пакета ServiceStack 3.9.71 NuGet.Текст 4.0.24?


У меня есть проект, который использует ServiceStack; мы запускаем старый 3.9.X кодовая база вместо обновления до 4.x, поскольку ServiceStack 4 требует коммерческой лицензии.

Мой собственный клиент API имеет зависимость, определенную в файле .nuspec следующим образом:

<dependencies>
  <dependency id="DotNetOpenAuth.OAuth2.Client" version="[4.3,5)" />
  <dependency id="log4net" version="[2.0,2.1)" />
  <dependency id="ServiceStack" version="[3.9.71,4)" />
</dependencies>

Проблема в том, что пакетServiceStack зависит от различных других битов фреймворка ServiceStack, а установка ServiceStack 3.9.71 - это установка ServiceStack.Текст В4.0.24 в мой проект. Оно появляется ли диалоговое окно, требующее принятия лицензии, что и предупредило меня о том, что происходит что - то странное-но если не определять вручную мои собственные зависимости для других требуемых компонентов ServiceStack, как я могу быть уверен, что не получу нелицензированные биты ServiceStack 4.x в моем проекте?

2 3

2 ответа:

Создайте пакет услуг.Зависимость текста явная в вашем .nuspec и поставить его перед зависимостью ServiceStack.

<dependencies>
  <dependency id="DotNetOpenAuth.OAuth2.Client" version="[4.3,5)" />
  <dependency id="log4net" version="[2.0,2.1)" />
  <dependency id="ServiceStack.Text" version="[3.9.71,4)" />
  <dependency id="ServiceStack" version="[3.9.71,4)" />
</dependencies>

Это заставит NuGet разрешить ServiceStack.Текст, использующий ограничение.

Проблема с простой установкой ServiceStack с использованием диапазона версий[3.9.71,4) разве что NuGet разрешает служебный пакет.Общая зависимость от самой низкой совместимой версии ServiceStack.Общим, который он определяет, является версия 3.9.11. Сервисный пакет.Общие 3.9.11 не делает укажите диапазон зависимостей для пакета ServiceStack.Текст NuGet для установки версии 4.0. Более поздние версии ServiceStack.У Common есть диапазон для пакета услуг.Текстовый пакет, но более старые версии этого не делают. Таким образом, не делая зависимость явной или имея ServiceStack.Текст пакета NuGet изменен так, что он помещает в диапазон, там не так много вы можете сделать при установке вашего пакета NuGet.

Единственное, что вы можете сделать, это ввести ограничение в свои пакеты.конфигурационный файл для предотвращения более новых версия устанавливаемого пакета ServiceStack.

<packages>
    <package id="ServiceStack.Text" version="3.9.71" allowedVersions="[3.9.71,4)" />
</packages>

Я сделал свой собственный пакет "обертки" для этого, содержащий не дополнительные файлы, а только ЗАВИСИМОСТИ-вот так:

<dependencies>
  <dependency id="ServiceStack.Text" version="[3.9.71]" />
  <dependency id="ServiceStack.Common" version="[3.9.71]" />
  <dependency id="ServiceStack.Redis" version="[3.9.71]" />
  <dependency id="ServiceStack.OrmLite.SqlServer" version="[3.9.71]" />
  <dependency id="ServiceStack" version="[3.9.71]" />
</dependencies>