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



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

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

我感觉到你的痛苦。(事实上,我感觉它已经结束了很多次。当我完成我工作的谷歌云dotnet repo的完整构建时,它会多次引入这些库,最终变得庞大。(

如果你能添加一种";负依赖性";说";我不想要Grpc.Core,尽管Google.Cloud.PubSub.V1间接依赖它,请使用Grpc.Net.Client",但我不相信在MSBuild项目中有任何简单的方法可以做到这一点。

我们确实制作了一个";尽最大努力";尝试通过Google.Api.Gax.Grpc.GrpcNetClient包支持Grpc.Net.Client-您可以依赖该包,然后将ClientBuilderBase<TClient>中的GrpcAdapter属性设置为GrpcNetClientAdapter.Default。但是:

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

真的没有一个更具体的包可以作为目标-我只能建议你删除不需要的文件。例如,您可以在运行后编译的构建目标中执行此操作。有可能有一种巧妙的方法告诉MSBuild,当它将iOS库复制到特定位置时,只需将它们排除在外-但我对MSBuild的了解还不够,无法说明如何做到这一点(当它们是由于依赖而非项目本身而被复制时(。

相关内容

最新更新