webapi:在同一解决方案中具有不同的nuget版本的软件包

时间:2018-08-31 07:47:14

标签: asp.net-web-api2 jwt nuget-package identityserver3 owin-middleware

我有一个webapi项目(项目A),该项目具有另一个类库项目(项目B)的依赖项。项目B具有一个nuget软件包,该软件包具有版本大于5.2(我的版本为5.2.2)的软件包System.IdentityModel.Tokens.Jwt的依赖项。但是项目A正在使用nuget Microsoft.Owin.Security.JwtSystem.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)一起使用?

0 个答案:

没有答案