【发布时间】:2018-11-02 07:35:55
【问题描述】:
在构建 .NET 项目时,我可以看到
发现不同版本的“System.Net.Http”之间存在冲突 无法解决。
此外,在拨打HttpClient.GetAsync(Uri) 时遇到异常
对象引用未设置为对象的实例
HttpClient 对象不应该为空,因为我在其上设置了 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 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),但该问题导致黄色警告星号,而我没有。
谁能解释为什么前两个项目的 System.Net.Http 版本号不同,尽管引用了相同的 NuGet 包,以及我的“未设置对象引用...”异常是否是由于在构建输出?
【问题讨论】:
标签: asp.net .net asp.net-core nuget .net-standard-2.0