注意到有一个Grpc.Core nuget 包 v2.23.0。几个月前,我使用(我认为是最新的软件包)v1.22.0。检查GRPC 版本,现在最新的是 v1.23.1。我希望 Grps.Core 对应 grpc 版本。
为什么版本改成2 .. . ? 有什么重大变化吗?
为什么版本更改为 2... ?
因为它发生了重大变化,仅针对 .NET。
有什么重大变化吗?
是的 - 对于某些用户。有两个重大变化:
System.Collections.Generic.IAsyncEnumerator<T>对(from )的引用System.Interactive.Async已被删除ChannelBase引入了一个新的基类这些更改中的第一个是因为IAsyncEnumerator<T>现在是标准库的一部分,但它与System.Interactive.Async. 基本上旧版本的 Grpc.Core / Grpc.Core.Api 不能很好地配合它。
第二个更改是为了在纯 .NET 实现 ( Grpc.Net.Commonetc) 和现有的 Google 实现 (Grpc.Core) 之间提供更好的通用性。
许多用户——尤其是那些不使用流式呼叫的用户——将能够重建。如果您确实使用流式调用,特别是如果您已经通过 抽象了它们IAsyncEnumerator<T>,您可能需要做一些工作来升级。
请务必注意,如果您使用的任何依赖项又依赖于 Grpc.Core 1.x,则在这些依赖项更新之前,您不能在同一项目中使用 Grpc.Core 2.x。(例如,目前所有的 Google Cloud 客户端库都依赖于 1.x。我们计划在 2019 年底之前自行推出一个主要版本,然后依赖于 2.x。)
提案 L57中有详细说明。
对于那些想知道如何将 gRPC .NET 版本与 gRPC 核心版本进行比较的人,@JonSkeets 的答案中提到的提案的这段摘录应该会有所帮助。
因此,我们将同时进行这两项更改,并将下一个 gRPC C# 版本发布为 v2.23.0(而不是 v1.23.0)。
我们选择了 v2.23.0 版本而不是 v2.0.0 版本,这样次要版本号仍然可以用于比较给定版本相对于所有其他 gRPC 实现的年龄。例如 gRPC C# 2.24.x 将与 gRPC C++ 1.24.x 一起发布。
在 gRPC C# 版本 2.x 和 1.x 之间没有提议更改协议 - 这两个版本将可以相互完全互操作,也可以与所有其他 gRPC 实现互操作。