导入的 protobuf 应该在 gRPC 中有选项吗?

Should imported protobuf have options in gRPC?

我试图在文档中找到答案,但找不到。 我是 gRPC 和 proto 文件的新手,这可能是一个非常基本的问题,很抱歉。

我在同一目录级别有两个文件

- mainProto.proto
- importedProto.proto

主要协议包括选项

option csharp_namespace = "business.products.accounts";
option go_package = "protobuf/com/bbva/business.accounts;products";
option java_multiple_files = true;
option java_package = "com.bbva.business.products.accounts";

importedProto 没有选项。它们 在同一个包中 。 我需要在导入的原型中声明相同的选项吗??

再次抱歉,这是一个基本问题,但我找不到答案,逻辑告诉我不是因为在同一个包中,但如果另一个包包含它,它将继承其他主要原型 buf 的选项?或者每个原型文件可以有不同的选项?

选项仅适用于它们所在的 file/message/field/service/rpc。因此,文件 top-level 处的选项仅适用于文件,不适用于包。您需要为每个文件重复选项。

Protoc 一次可以为单个文件生成代码。如果一个文件的选项可能会影响另一个文件,这意味着您会得到不同的结果,具体取决于您在单次调用 protoc 时一起生成的文件。为了解决这个问题,protoc 必须要求一次生成包中的所有 proto,但事实并非如此。 Protoc 更类似于 C/C++,其中每个文件都可以单独编译,包只是一种命名空间机制。