在构建.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包,我的“对象引用没有设置......”异常是由于在此期间提到的冲突造成的构建输出?
答案 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的绑定重定向,我设法解决解决这个问题。
我不完全确定为什么这可行,但确实如此。我会间歇地检查一下,看看我是否需要将它评论出来。