使用 IdentityModel v3.6.1 和 .Net 4.7.2 构建错误

Build error with IdentityModel v3.6.1 and .Net 4.7.2

我使用的是 IdentityModel v3.6.1 中的 IntrospectionClient 和 TokenClient。
但是当我将项目从 .Net 4.7.1 升级到 4.7.2 时,我遇到了构建错误:

"Error CS0012 The type 'HttpMessageHandler' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"

The project is already referencing "System.Net.Http" v4.3.3

有没有人知道 wat 已经改变了,我可以做些什么来解决这个问题?

您是否正在使用 <PackageReference Include=".../> 引用 IdentityModel 包?如果是这样,我相信您可能 运行 陷入这个已知问题:https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/613745%20-%20Single-name%20references%20are%20removed%20by%20the%20SDK%20when%20targeting%204.7.2.md

假设是这种情况,您能否尝试其中列出的解决方法,基本上是将以下内容添加到您的 .csrpoj 中:

<ItemGroup>
  <PackageReference Include="System.Net.Http" Version="4.3.3">
    <ExcludeAssets>All</ExcludeAssets>
  </PackageReference>
</ItemGroup>

希望能解决您的问题。另外请注意,我们正在 VisualStudio 方面进行修复,这样您就不再需要此解决方法了。

将 IdentityModel 包更新到 IdentityModel v3.7.0-preview1 有帮助。