如何为 C# <proto/> 定义传递experimental_allow_proto3_optional 以在proto3 中启用optional?

Jam*_*ock 5 c# protocol-buffers grpc

我到处找这个。C# grpc 人员不知道如何做,并指向 grpc/grpc 人员获取工具,但不允许您在那里提问。我想我可以将其描述为一项功能,但这感觉就像在作弊。(请添加文档也显示如何...)

如何将这个参数传递给 <proto> 定义中的 C# grpc 以便我们可以使用 optional 关键字?

谢谢!

小智 2

至于 2021 年 1 月,解决这个问题的唯一但又很黑客的方法是让你的 proto 文件名(或目录名)包含 string ,正如protobuf 文档test_proto3_optional指出的那样:

如果您尝试在具有 proto3 可选字段的文件上运行 protoc,您将收到错误,因为该功能仍处于实验阶段。[...]有两种方法可以解决此错误:

  1. 传递--experimental_allow_proto3_optional给协议。
  2. 使您的文件名(或目录名)包含字符串test_proto3_optional。这表明该proto文件是专门用于测试proto3可选支持的,因此该检查被抑制。

有关详细信息,请参阅#977 (grpc-dotnet)、#19164 (AspNetCore.Docs) 和#23686 (grpc) 问题。

  • 哎呀。传递这些参数需要成为.net中对grpc支持的一部分 (2认同)