Protobuf导入失败

19

有人知道哪里能找到一个 gRPC 的 protobuf 文件例子,该文件从另一个文件中导入并在返回中使用 protobuf 消息吗?我一点都找不到。

我有一个文件...

syntax = "proto3";
package a1;
import "a.proto";
service mainservice {
  rpc DoSomething(...) returns (a.SomeResponse) {}


}

a.proto也在同一目录中,并且它本身也可以编译。我收到的错误消息是: "a.SomeResponse"未定义。 mainfile.proto:警告:导入a.proto但未使用。

2个回答

41

找到了答案...需要确保在指定导入的对象时使用 a.proto 的包名称(例如:a_package_name.SomeResponse)。示例:

base.proto


基础.proto
syntax = "proto3";
option csharp_namespace = "Api.Protos";
package base;
message BaseResponse {
    bool IsSuccess = 1;
    string Message = 2;
}

user.proto

syntax = "proto3";
import "Protos/base.proto";
option csharp_namespace = "Api.Protos";
package user;

message UserCreateResponse {
    base.BaseResponse response = 1;
}

0

看起来是从根目录导入,而不是当前的proto文件夹。因此,如果您的所有proto文件都在Proto文件夹下,则需要添加“Proto/a.proto”。


你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接