在构建.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 的绑定重定向来解决此问题。
我不完全确定为什么这有效,但它确实如此。我会间歇性地回来检查,看看我是否需要将其注释掉。