【问题标题】:System.Text.Json packages adds System.ValueTuple package even though it shouldnt need itSystem.Text.Json 包添加了 System.ValueTuple 包,即使它不应该需要它
【发布时间】:2021-12-02 16:40:43
【问题描述】:

所以这很容易重现。创建一个 .Net Framework 4.7.2 项目并添加 System.Text.Json nuget 包(v 5.0.2),看到它说它将添加包括 System.ValueTuple 在内的依赖包。

但据我了解不应该。

.Net Framework 4.7.2 是 .Net Standard 2.0(请参阅此处 https://docs.microsoft.com/en-us/dotnet/standard/net-standard)并在 BCL 中包含 System.ValueTuple。

我们可以在 nuget 网站上看到 System.Text.Json https://www.nuget.org/packages/System.Text.Json 对于 .net 标准 2.0 System.ValueTuple 不是依赖项

但它适用于框架 4.6.1

所以这是一个大问题......当我的项目针对 4.7.2(即 .Net Standard 2.0)时,为什么 nuget 会解决 4.6.1 的依赖关系??

【问题讨论】:

  • 根据this GitHub issue“如果库仅是 netstandard,net472 会选择它。如果库有任何 net framework 目标,net472 会选择它。”所以这是预期的行为,如果不是特别明显的话。
  • @RichardDeeming 谢谢!显然解决问题将是最好的结果,但实际上理解它是紧随其后的。我真的很难找到这方面的信息,所以非常感谢您分享链接。我会认为你的评论值得回答,这样我就可以给你一些我们都渴望的甜蜜的互联网点

标签: c# nuget .net-standard .net-standard-2.0 .net-framework-4.8


【解决方案1】:

正如 cmets 中所讨论的,根据this GitHub issue“如果库仅是 netstandard,net472 会选择它。如果库有任何 net framework 目标,net472 会选择它。”

所以这是预期的行为,如果不是特别明显的话。

幸运的是,System.ValueTuple NuGet 包有一个单独的 .NET 4.7 目标,它将类型转发到 BCL 实现,因此额外的引用不会导致任何问题。

【讨论】:

    猜你喜欢
    • 2021-11-29
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 2013-07-29
    • 1970-01-01
    • 2018-11-22
    • 1970-01-01
    相关资源
    最近更新 更多