我正在使用protobuf-net的ProtoBufTool自定义工具从.proto文件生成C#类。到目前为止,我还无法在proto文件中获取import
语句来处理相对路径。以下是我的情况:
我的项目中有2个原型文件,如下所示:
User.proto:
package Models;
message User {
required int32 ID = 1;
required string Username = 2;
// etc...
}
UserSearch.proto:
package Models.Messages;
import "../User.proto";
message UserSearchRequest {
optional string Query = 1;
optional int32 Limit = 2;
optional int32 Offset = 3;
}
message UserSearchResult {
required int32 NumResults = 1;
required int32 NumReturned = 2;
repeated User Users = 3;
}
User.cs文件生成正常但在UserSearch文件上失败。这是我在错误列表窗口中看到的。
为了记录,我尝试使用\\
代替/
,我得到了相同的结果。如果两个proto文件位于同一目录中并删除../
,则import语句也能正常工作,但这不是我想要安排文件的方式。
如何在import语句中获取相对路径?
答案 0 :(得分:3)
简短回答 - 在与protoc
(谷歌的.proto解析器)交谈时,我必须对工具及其使用的路径有一个错误。我将不得不看一下并解决它。
更尴尬的答案; 如果你不介意使用命令行工具,你可以使用google的protoc使用--descriptor_set_out={file}
编译.proto到二进制文件,使用你选择的任何--proto_path
选项(所以到目前为止,这纯粹是谷歌工具);然后,您可以将编译后的描述符集作为输入传递给protogen
(它处理任一格式)。
这对于脚本化构建是可以的,但您不希望手动执行此操作!我会试着看看工具有什么问题。已添加到列表中。