System.Net.Http参考冲突可能是由于.NET Standard 2.0

时间:2018-05-23 10:38:14

标签: asp.net .net asp.net-core nuget .net-standard-2.0

在构建.NET项目时,我可以看到

  

发现不同版本的“System.Net.Http”之间存在冲突   无法解决。

此外,在拨打HttpClient.GetAsync(Uri)时,我收到了异常

  

对象引用未设置为对象的实例

HttpClient对象不应为null,因为我在其上设置了DefaultRequestHeaders,并且此时没有异常。

这是在WebAPI项目中发生的,该项目引用了System.Net.Http v4.3.3 NuGet包,导致项目具有System.Net.Http.dll v4.1.1.2。

此WebAPI项目还包含对另一个项目的引用(其中包含前面提到的HttpClient.GetAsync(Uri)调用),该项目本身也引用了System.Net.Http v4.3.3 NuGet包,这导致项目具有System.Net .Http.dll v4.2.0.0。

为什么这两个版本的数字不同,因为这两个项目都针对的是.NET Framework v4.7.1?

我已尝试Update-Package -reinstall以及删除和重新添加NuGet引用。

值得一提的另一点是,引用的项目(,而不是WebAPI项目)又引用了.NET Standard 2.0项目,该项目也引用了System.Net.Http v4.3.3。我只有这个问题,因为这个最里面的项目已经从.NET Standard 1.3更新到2.0。

所以链是

WebAPI(.NET Framework v4.7.1)
> System.Net.Http v4.3.3
>类库(.NET Framework v4.7.1)
> System.Net.Http v4.3.3
>类库(NET Standard 2.0)
> System.Net.Http v4.3.3

引用.NET Standard 2.0和System.Net.Http的项目之间存在已知的兼容性问题(请参阅here),但该问题导致黄色警告星号,而我没有。“ / p>

有人可以解释为什么前两个项目的System.Net.Http版本号不同,尽管引用了相同的NuGet包,我的“对象引用没有设置......”异常是由于在此期间提到的冲突造成的构建输出?

2 个答案:

答案 0 :(得分:1)

我遇到了一个与.NET Standard 2.0和绑定重定向有关的类似问题。我通过在受影响项目的.csproj文件中添加以下行来解决它(对我来说是一个单元测试项目)。该问题已解释为here

<PropertyGroup>
    <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>

答案 1 :(得分:0)

通过在WebAPI项目中注释掉System.Net.Http的绑定重定向,我设法解决解决这个问题。

我不完全确定为什么这可行,但确实如此。我会间歇地检查一下,看看我是否需要将它评论出来。