如何解决HttpClient存在于多个库中

Dav*_*rke 8 c# dotnet-httpclient .net-core .net-standard-2.0

我正在尝试在.NET Core类库中使用IdentityModel包,但是我netstandard和之间发生了冲突System.Net.Http:

error CS0433: The type 'HttpClient' exists in both
'System.Net.Http, Version=4.1.1.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and
'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'
Run Code Online (Sandbox Code Playgroud)

项目文件:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="IdentityModel" Version="2.8.1" />
  </ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

默认值Class1.cs:

using System;
using System.Net.Http;
namespace Test
{
    public class Class1
    {
        HttpClient client = new HttpClient();
        public Class1() {}
    }
}
Run Code Online (Sandbox Code Playgroud)

解决此问题的正确方法是什么?

Fra*_*bem 1

我最近在尝试在 Xamarin 项目中使用 HttpClient 时遇到了类似的问题。为了解决这个问题,我添加了一个配置文件并重定向到 System.Net.Http 的特定版本。这可能对您有用,但您必须选择要使用的版本“2.0.0.0”与“4.1.1.1”。app.config的内容:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.1.1.1" newVersion="4.1.1.1" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)