asp.net - System.Net.Http 引用冲突可能是由于 .NET Standard 2.0
问题描述
在构建 .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 的项目之间存在已知的兼容性问题(请参阅此处),但该问题导致黄色警告星号,而我没有。
谁能解释为什么尽管引用了相同的 NuGet 包,前两个项目的 System.Net.Http 版本号不同,以及我的“未设置对象引用...”异常是否是由于构建输出中提到的冲突造成的?
解决方案
我遇到了一个与 .NET Standard 2.0 和绑定重定向有关的类似问题。我通过将以下几行添加到受影响项目的 .csproj 文件(对我来说是一个 unittest 项目)来解决它。这个问题在这里解释。
<PropertyGroup>
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
推荐阅读
- javascript - javascript布尔变量的值没有改变
- python - 如何将熊猫系列转换为数据框以与其他数据框合并
- react-native - 通过“Back”键在不同的堆栈之间来回移动
- django - Redirect logged in users from register view
- javascript - compare a string with all elements of array in a single loop
- django - Django Rest Framework 中的 HTTPS 资源链接
- python - 如何修复 TypeError:无法连接类型为 ' 的对象
'; 只有 Series 和 DataFrame obj 有效吗? - ios - Swift: Updating labels in shared container view
- list - 倒数第二个配对案例
- python - 如何使这些 websocket 异步工作?