webapi: разные версии пакета nuget в одном решении
У меня есть проект webapi (проект A), который зависит от другого проекта библиотеки классов (проект B). Проект B имеет пакет nuget, который зависит от пакета System.IdentityModel.Tokens.Jwt
с версией больше 5.2 (у меня версия 5.2.2). Но проект А использует нюгет 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".
Это потому, что они переименовали некоторые классы (вы можете увидеть обсуждение в этой теме). Так что в проекте А я использовал нюгет 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)