我有一个webapi项目(项目A),该项目具有另一个类库项目(项目B)的依赖项。项目B具有一个nuget软件包,该软件包具有版本大于5.2(我的版本为5.2.2)的软件包System.IdentityModel.Tokens.Jwt
的依赖项。但是项目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,版本= 4.0.0.0,文化=中性,PublicKeyToken = 31bf3856ad364e35”中加载类型“ Microsoft.Owin.Security.Jwt.IIssuerSecurityTokenProvider”。
这是因为他们已经重命名了某些类(您可以在this thread中看到讨论)。因此,在项目A中,我在版本3.1.0中使用了nuget Microsoft.Owin.Security.Jwt
,但是它与软件包System.IdentityModel.Tokens.Jwt
5.2.2版本不兼容,因为我遇到了错误:
无法从程序集'System.IdentityModel.Tokens.Jwt,Version = 5.2.2.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'中加载类型'System.IdentityModel.Tokens.TokenValidationParameters'。
因此,我将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)一起使用?