.NETFramework的.NetStandard nuget包问题

时间:2019-04-22 18:00:04

标签: asp.net jwt nuget-package .net-standard

我有3个项目:

    我安装了.NETStandard 2.0中的
  1. SDK System.IdentityModel.Tokens.Jwt (5.4.0) nuget程序包。
  2. .NETCore 2.1中的ASP.NET Core API
  3. .NETFramework 4.7.2中的ASP.NET API

在两个api中都引用了sdk,.NETCore api中没有任何问题,但是.NetFramework api中出现错误:

Could not load file or assembly 'Microsoft.IdentityModel.Tokens, Version=5.4.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

不是应该同时在.NETFramework和.NET核心中支持.NEtStandard吗?我错过了什么?

1 个答案:

答案 0 :(得分:1)

扩展了上面的评论。

许多NuGet软件包确实包含用于不同目标平台的不同程序集(例如netxx和netstandardxx),并且这些程序集不可互换。

因此,当项目结构如下时,您遇到了一个问题,

net472项目-取决于-> netstandard20项目-取决于-> System.IdentityModel.Tokens.Jwt(netstandard20)

由于这种方式,net472项目消耗了NuGet包的netstandard20副本,从而触发了错误。

有多种解决方法,您的解决方案只是其中之一,它可以将netstandard20项目修改为多目标(netstandard20和net461)。这告诉NuGet为net472项目提供适当的装配,然后一切开始工作。