У меня есть проект 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)?