【发布时间】:2019-02-09 12:17:09
【问题描述】:
我考虑将我的 System.ValueTuple 引用从 4.4.0 更新到(当前)4.5.0。
为了避免回归,我想了解这两个版本之间的变化。 nuget page 说:
发行说明
链接到 .NET Core github 存储库。
“发布说明”链接是否已损坏,或者 .NET Core github 存储库实际上是否包含 System.ValueTuple 的更改日志?如果是后者,具体在哪里?我尝试了searching for System.ValueTuple in the repository,它产生了一些结果,但没有帮助我找到版本 4.4.0 和 4.5.0 之间的变化。
【问题讨论】:
-
您可能应该询问运行时/SDK 之间的差异。
System.*包充当 polyfill,如果匹配更好,则重定向到运行时的实现,并为早期的运行时提供实现。如果存在不匹配,它们也是一个相当大的痛苦,因为它们添加了许多临时依赖项和绑定重定向,这些重定向在新版本发布时并不总是被删除。看看 Nick Craver 去年的推文就知道了。如果您想使用 .NET Standard 2.0 库,您可能应该以 .NET 4.7.2 为目标,因此您根本不必使用这些包。 -
.NET 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),如果有帮助的话。 -
去年我也遇到了同样的问题。每次我从框架版本转移到下一个版本时,例如 4.6.2 到 4.7.0 到 4.7.1,我都不得不与 很多 的剩余绑定重定向到 4.4 包作斗争。最后,唯一可靠的解决方案是删除所有这些包和重定向并重新添加它们。 Immo Lanwerth 最近承认,polyfill 没有按预期工作,无法将标准 2.0 兼容性添加到降级运行时。最后,如果您想要 Standard 2.0,则必须以 4.7.2 运行时或 .NET Core 2.0 为目标
-
Nothing changed。值得注意的是 .netcore 如何使语义版本控制完全无用。如果您下载 4.5.0 nuget 包,那么您实际上获得的是 4.0.3.0 版本。参考程序集上的 commit history 暗示版本控制已经严重失控。
-
@HansPassant 我认为如果您将其移至答案部分,您的评论会更有帮助。我猜你实际上是在回答这个问题,而且似乎是我们可能得到的唯一答案。
标签: c# .net c#-7.0 base-class-library valuetuple