如何从unix使用protobuf-csharp-port

我们一直在使用协议缓冲区,并用protoc生成c ++和python文件,用protobuf-csharp-port生成c#文件。 目前,这些都是分别完成的,从Linux的C + +和Python和从Windows的C#。 我们希望有一个脚本生成所有这些,运行在Linux中。

要做到这一点,我试图与单声道运行ProtoGen.exe,但它不会产生任何输出。 以下命令运行,但不产生cs文件,也没有错误。

mono ../cs/Packages/Google.ProtocolBuffers/tools/ProtoGen.exe --protoc_dir=/usr/local/bin/ ./subdir/simple_types.proto 

我有一种感觉,我错过了简单的事情。

我不认为我已经尝试从Linux上的ProtoGen.exe运行protoc。 我很惊讶,它没有任何错误,但我们可以肯定地看到。 (如果你喜欢提出一个问题,这将是非常有用的,否则当我有机会的时候我会这么做。)

目前,我建议你先运行--descriptor_set_out ,使用--descriptor_set_out生成.proto文件的二进制(protobuf)版本。 这就是ProtoGen.exe首先要做的事情,并失败的声音。

一旦获得了消息描述符的二进制版本(我称之为simple_types.pb),就可以在其上运行ProtoGen.exe。 我已经做了一段时间了,但是我相信你应该能够跑步

 mono ../cs/Packages/Google.ProtocolBuffers/tools/ProtoGen.exe ./subdir/simple_types.pb 

…它应该神奇地工作。

作为一个可怕的选择,您可以尝试将protoc.exe链接到您的二进制目录中。 基本上我怀疑这是怎么回事:)

我的脚本

 protoc "--proto_path=$SRC_DIR" "--descriptor_set_out=x.protobin" --include_imports $SRC_DIR/x.proto mono $PRJ_HOME/Google.ProtocolBuffers.2.4.1.521/tools/ProtoGen.exe -line_break=Unix x.protobin 

protoc和mono通过distrib包管理器安装:

 # archlinux pacman -S protobuf mono