System.ValueTuple 4.4.0 -> 4.5.0有哪些变化?

19

我考虑将我的System.ValueTuple引用更新从4.4.0到当前的4.5.0版本。

为了避免退化,我想找出这两个版本之间有什么变化。在nuget网页中说:

发布说明

https://go.microsoft.com/fwlink/?LinkID=799421

它链接到.NET Core github代码库。

"发布说明"链接失效还是.NET Core Github代码库实际上包含System.ValueTuple的更改记录?如果是后者,具体位置在哪里?我已经尝试在代码库中搜索System.ValueTuple,得到了一些结果,但没有帮助我找到版本4.4.0和4.5.0之间的更改。


你应该询问一下运行时/SDK之间的区别。System.*包作为填充物,如果它们更匹配,则会重定向到运行时的实现,并为早期运行时提供一个实现。但是,如果存在不匹配,它们可能会带来很多短暂依赖和绑定重定向问题,而这些问题在新版本发布时并不总是被移除。只需看看Nick Craver过去一年的推文就知道了。如果你想使用.NET Standard 2.0库,你应该选择目标为.NET 4.7.2,这样你就完全不需要使用这些包。 - Panagiotis Kanavos
4.7的4.5.0 DLL包含一个[assembly: AssemblyInformationalVersion("4.6.26515.06 @BuiltBy: dlab-DDVSOWINAGE059 @Branch: release/2.1 @SrcCode: https://github.com/dotnet/corefx/tree/30ab651fcb4354552bd4891619a0bdd81e0ebdbf")]属性(不是core仓库,而是corefx),如果这有帮助的话。 - user743382
2
过去一年我遇到了同样的问题。每次我从一个框架版本转移到下一个版本,例如从4.6.2到4.7.0再到4.7.1,我都不得不处理大量残留的绑定重定向到4.4包。最终唯一可靠的解决方案是删除所有这些包和重定向,并将它们重新添加回来。Immo Lanwerth最近承认,填充程序未能按预期工作,以便将标准2.0兼容性添加到降级运行时。最终,如果您想要标准2.0,您将需要针对4.7.2运行时或.NET Core 2.0进行目标设置。 - Panagiotis Kanavos
8
没有改变。.Net Core让语义化版本控制变得毫无用处,如果你下载4.5.0的Nuget包,实际上你会得到4.0.3.0版本。参考程序集的提交历史记录暗示着版本控制正在变得非常混乱。 - Hans Passant
2
@HansPassant,如果您将评论移至答案部分,我认为它会更有帮助。因为我猜您实际上正在回答这个问题,而且似乎是我们可能得到的唯一答案。 - Mariano Desanze
显示剩余2条评论
1个回答

2

System.ValueTuple的源代码可以在这里找到。

根据Nuget历史记录,版本4.4.0于2017年9月8日发布,4.5.0于2018年5月29日发布。

因此,根据git历史记录,这个提交是在此时间范围内进行的唯一提交(修复了文档中的一个错别字):

  public T1 Item1;

  /// <summary>
- /// The current <see cref="ValueTuple{T1, T2}"/> instance's first component.
+ /// The current <see cref="ValueTuple{T1, T2}"/> instance's second component.
  /// </summary>
  public T2 Item2;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接