webapi: разные версии пакета nuget в одном решении - PullRequest
0 голосов
/ 31 августа 2018

У меня есть проект webapi (проект A), у которого есть зависимость другой проект библиотеки классов (проект B). В проекте B есть пакет nuget, который зависит от пакета System.IdentityModel.Tokens.Jwt с версией больше 5.2 (у меня версия 5.2.2). Но проект A использует nuget Microsoft.Owin.Security.Jwt и System.IdentityModel.Tokens.Jwt. Теперь ребята, которые поддерживают эти нюгеты, кое-что испортили и внесли некоторые изменения в эти пакеты. Если я использую Microsoft.Owin.Security.Jwt версию 4.0 (последнюю) и System.IdentityModel.Tokens.Jwt версию 5.2.2, я получаю ошибку

Не удалось загрузить тип 'Microsoft.Owin.Security.Jwt.IIssuerSecurityTokenProvider' из сборки 'Microsoft.Owin.Security.Jwt, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35'.

Это потому, что они переименовали некоторые классы (обсуждение можно посмотреть в этой теме ). Поэтому в проекте A я использовал nuget Microsoft.Owin.Security.Jwt с версией 3.1.0, но это несовместимо с пакетом System.IdentityModel.Tokens.Jwt версии 5.2.2, потому что я получаю сообщение об ошибке:

Не удалось загрузить тип 'System.IdentityModel.Tokens.TokenValidationParameters' из сборки 'System.IdentityModel.Tokens.Jwt, версия = 5.2.2.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35'.

Итак, я понизил версию nuget System.IdentityModel.Tokens.Jwt до версии 4.0.4, и теперь мой проект запускается, но когда я вызываю контроллер, который использует вспомогательный класс из проекта B, который имеет отношение к некоторые классы серверов идентификации, мой API конфликтует с ошибкой:

Не удалось загрузить файл или сборку 'System.IdentityModel.Tokens.Jwt, версия = 5.2.2.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35' или одна из ее зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

Так есть ли способ заставить мое решение работать с двумя версиями nuget System.IdentityModel.Tokens.Jwt (4.0.4 и 5.2.2)?

...