c# - 我真的需要整个 Grpc.Core NuGet 包才能在简单的 C# 应用程序中使用 Google PubSub

标签 c# grpc google-cloud-pubsub

我正在创建一个简单的 C# 桌面应用程序,该应用程序从 Google Cloud PubSub 提取消息。我注意到 PubSub 使用 Grpc.Core 包,安装后大小超过 500 mb!它包含许多我不需要的文件(对于 mac、android 等),如果我的应用程序大小只有几 MB,那么使用这样的包似乎不合理。这里有一个讨论: Why is Grpc.Core NuGet package so big?

在评论部分据说可以针对更具体的包来满足特定的需求。所以我的问题是 - 是否有更具体的包可用于简单地将消息从 Cloud PubSub 提取到桌面应用程序?

最佳答案

我感受到你的痛苦。 (事实上​​,我多次感受到了这一点。当我对我所从事的 google-cloud-dotnet repo 进行完整构建时,它会多次引入这些库,最终变得庞大。)

如果您可以添加一种“负依赖”来表示“我不想要 Grpc.Core,即使 Google.Cloud.PubSub.V1 间接依赖于它,那就太好了”请改用 Grpc.Net.Client”,但我不认为在 MSBuild 项目中有任何简单的方法可以做到这一点。

我们确实“尽力”尝试通过 Google.Api.Gax.Grpc.GrpcNetClient 包支持 Grpc.Net.Client - 您可以依赖该包,然后设置 GrpcAdapter属性(property) ClientBuilderBase<TClient>GrpcNetClientAdapter.Default 。但是:

  • 由于手动代码层包装了生成的代码,Pub/Sub 库的重新配置比其他库稍微复杂一些。 (如果您有兴趣,我可以研究如何执行该配置。)
  • 我们尚未对 Grpc.Net.Client 进行重要测试,尤其是 Pub/Sub 库执行大量流处理;虽然它应该都能正常工作,但也可能会出现问题。
  • 这样做实际上并不会删除 Grpc.Core 依赖项 - 因此您需要手动删除不需要的文件。

确实没有更具体的软件包可供您定位 - 我只能建议您删除不需要的文件。例如,您可以在运行后编译的构建目标中执行此操作。 可能有一些狡猾的方法来告诉 MSBuild,当它复制(比如说)iOS 库到特定位置时,只需排除它们 - 但我不这样做足够了解 MSBuild 来说明您将如何做到这一点(当它们由于依赖项而不是由于项目本身而被复制时)。

关于c# - 我真的需要整个 Grpc.Core NuGet 包才能在简单的 C# 应用程序中使用 Google PubSub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63249450/

相关文章:

c# - 打开文件时出现 FileNotFound 异常

c# - 如何将 UWP 应用程序注册为相机快照的共享接收者

java - gRPC-java - .proto 文件的编译

rest - GRPC 与 REST 有何不同?

google-cloud-platform - 使用 Dataproc 将 Google Pub/Sub 与 Flink Streaming 结合使用的正确方法是什么?

google-apps-script - 无效的主题名称不匹配

c# - GetType() 和 typeof() 是否构成反射?

c# - 如何让 EventLog 将用户名记录到 Window 事件日志中?

go - 获取未实现的 desc = 未知的服务错误 gRPC

java - 使用异步拉取持续从 Google PubSub 接收消息