Nuget Grpc.Core 包版本

Nuget Grpc.Core package versions

注意到有一个Grpc.Core nuget package v2.23.0. Few months ago I used (as I thought the latest package) v1.22.0. Checked GRPC releases,现在最新的是v1.23.1。我希望 Grps.Core 对应于 grpc 版本。

为什么版本改为2..。 ?有什么重大变化吗?

Why the version was changed to 2... ?

因为它进行了重大更改,仅适用于 .NET。

Are there any significant changes?

是 - 对于 一些 用户。有两个重大变化:

  • 已删除对 System.Collections.Generic.IAsyncEnumerator<T>(来自 System.Interactive.Async)的引用
  • 已引入新基地classChannelBase

第一个变化是因为 IAsyncEnumerator<T> 现在是标准库的一部分,但它与 System.Interactive.Async 中的版本不同。基本上 Grpc.Core / Grpc.Core.Api 的旧版本不能很好地与那个一起玩。

第二个更改是为了在纯 .NET 实现(Grpc.Net.Common 等)和现有的 Google 实现(Grpc.Core)之间提供更好的通用性。

许多用户——尤其是那些不使用流式通话的用户——将能够重建。如果您确实使用流式调用,特别是如果您通过IAsyncEnumerator<T>抽象了它们,您可能需要做一些升级工作。

重要的是要注意,如果您使用的任何依赖项又依赖于 Grpc.Core 1.x,您 不能 使用 Grpc.Core 2.x 在同一项目中,直到这些依赖项已更新。 (例如,所有 Google 云客户端库目前都依赖于 1.x。我们计划在 2019 年底之前自己进行主要版本升级,然后依赖于 2.x。)

proposal L57.

中有详细说明

对于那些想知道如何将 gRPC .NET 版本与 gRPC 核心版本进行比较的人,@JonSkeets 的回答中提到的建议摘录应该有所帮助。

Therefore we will make both changes at the same time and release the next gRPC C# version as v2.23.0 (instead of v1.23.0).

We chose version v2.23.0 instead of v2.0.0 so that the minor version number can still be used for comparing how old a given release is relative to all other gRPC implementations. E.g. gRPC C# 2.24.x will be released together with gRPC C++ 1.24.x.

NO protocol changes are proposed between gRPC C# version 2.x and 1.x - both versions will be fully interoperable with each other and also with all other gRPC implementations.