System.Net.Http 引用冲突可能是由于 .NET Standard 2.0 造成的



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

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

此外,在拨打HttpClient.GetAsync(Uri)电话时,我得到一个例外

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

HttpClient对象不应该为 null,因为我在其上设置了 DefaultRequestHeaders,此时不会发生异常。

这发生在引用System.Net.Http v4.3.3 NuGet包的WebAPI项目中,该项目导致该项目具有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 标准 1.3 更新到 2.0 以来,我才遇到这个问题。

所以链条是

WebAPI (.NET Framework v4.7.1(> System.Net.Http v4.3.3> 类库 (.NETFramework 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 的项目之间存在已知的兼容性问题(请参阅此处(,但该问题导致黄色警告星号,而我没有。

谁能解释为什么尽管引用了相同的 NuGet 包,但前两个项目的 System.Net.Http 版本号不同,以及我的"对象引用未设置......" 异常是由于构建输出期间提到的冲突?

我遇到了一个与.NET Standard 2.0和绑定重定向有关的模拟问题。我通过将以下行添加到受影响项目的 .csproj 文件(对我来说是一个单元测试项目(来解决它。此处解释了此问题。

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

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

我不完全确定为什么这有效,但它确实如此。我会间歇性地回来检查,看看我是否需要将其注释掉。

最新更新