Установка Microsoft.Extensions.DependencyInjection в .NET Framework 4.7.1 проект - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь установить пакеты nuget Microsoft.Extensions.DependencyInjection и Microsoft.Extensions.DependencyInjection.Abstractions 2.0.0 в проект .NET Framework 4.7.1 (Microsoft.AspNet.OData), однако получаю ошибка:

Не удалось установить пакет 'Microsoft.Extensions.DependencyInjection 2.0.0. Вы пытаетесь установить этот пакет в проект, предназначенный для .NETFramework, Version = v4.7.1, но пакет не содержать любые ссылки на сборки или файлы содержимого, которые совместимы с этой структурой. Для получения дополнительной информации свяжитесь с автором пакета.

Зависимость для этих пакетов: .NETStandard, версия = v2.0. Я понимаю, что .NET Standard не является .NET Framework, однако я думал, что .NET Framework 4.6 и более поздние проекты могут устанавливать проекты .NET Standard? Если это невозможно, то существуют ли другие эквивалентные версии этих пакетов nuget для .NET Framework?

Вся причина, по которой я проходил это упражнение, заключается в том, что многие разработчики полностью заблокированы Microsoft.AspNet.OData, поддерживающим только DI 1.0, а не 2.0. Это означает, что мы не можем обновить наши пакеты nuget в нашем веб-интерфейсе OData, так как другие пакеты требуют DI 2.0, но OData застряла на 1.0. В остальных наших приложениях используются самые последние и лучшие версии, поэтому на самом деле это означает, что наше веб-API OData-решение не может использовать ЛЮБОЙ из нашего общего кода и полностью помещено в карантин до разрешения этого блока совместимости.

1 Ответ

0 голосов
/ 04 мая 2018

Установка Microsoft.Extensions.DependencyInjection в .NET Framework 4.7.1 проект

Я думаю, что сообщение об ошибке не является точным. Когда я устанавливаю пакет nuget Microsoft.Extensions.DependencyInjection 2.0.0 в проект (Microsoft.AspNet.OData), я получаю следующее сообщение об ошибке:

Невозможно разрешить зависимости. Microsoft.Extensions.DependencyInjection 2.0.0 не совместимо с ограничением Microsoft.AspNet.OData 7.0.0-beta2: Microsoft.Extensions.DependencyInjection (> = 1.0.0 && <2.0.0) '. </p>

Это именно то, что вы сказали ", поскольку многие разработчики полностью заблокированы Microsoft.AspNet.OData, поддерживающим только DI 1.0, а не 2.0. "

Проверьте зависимости пакета Microsoft.AspNet.OData, мы могли бы знать, что существуют строгие ограничения для зависимостей Microsoft.Extensions.DependencyInjection и Microsoft.Extensions.DependencyInjection.Abstractions ((>= 1.0.0 && < 2.0.0))

Итак, это действительно проблема, что пакет Microsoft.AspNet.OData не поддерживает DI 2.0. Многие другие сообщества также сообщают об этой проблеме на Github , но до сих пор нет никакого обходного пути и решения.

Мой текущий обходной путь :

  • Создать новый проект без установки пакета Microsoft.AspNet.OData.

  • Установите другие зависимости пакета Microsoft.AspNet.OData: Microsoft.OData.Core (>= 7.2.0 && < 8.0.0), Microsoft.AspNet.WebApi.Core (>= 5.2.2 && < 5.3.0) и Microsoft.AspNet.WebApi.Client (>= 5.2.2 && < 5.3.0) (последние два пакета должны быть включены в шаблон по умолчанию).

  • Установить пакет nuget Microsoft.Extensions.DependencyInjection 2.0.0

  • Установите пакет nuget Microsoft.AspNet.OData с параметром -IgnoreDependencies в консоли диспетчера пакетов:

    пакет обновления Microsoft.AspNet.OData -IgnoreDependencies -IncludePrerelease

С этим обходным путем мы могли бы использовать Microsoft.AspNet.OData и DI 2.0, но я мог полностью подтвердить, вызовет ли нарушение ограничения зависимости какую-либо проблему для пакета Microsoft.AspNet.OData. Простые тесты не являются проблематичными.

Надеюсь, это поможет.

...