c# - 从其他项目protobuf文件导入消息类型

标签 c# go protocol-buffers protoc

我试图以这样的方式构建我的原始文件:当我使用多种语言构建时,我所包含的原始文件可以公开获得。我尝试了import public "webrtc/signaling.proto",它删除了“未使用”消息,但是当我使用./protoc.exe -I=G:/MafiaProject/MafiaProtobuf/protofiles --csharp_out=G:/MafiaProject/MafiaProtobuf/csharp_out G:/MafiaProject/MafiaProtobuf/protofiles/mafia.proto命令时,RTCMessage的消息类型仍未包含在我的C#生成Mafia.cs中,但是当我进行构建时似乎包含了它。

syntax = "proto3";
option go_package = "github.com/rgeorgeoff/webRTCProto";
package webrtc;

enum ReqType {
  SDP = 0;
  ICE = 1;
}

message RTCMessage {
  ReqType req_type = 1;
  bytes data = 2;
}
在mafia.proto中,它是上面的目录:
syntax = "proto3";
option go_package = "github.com/rgeorgeoff/SlimePartyGoServer/protobuf3";
package mafia;
import "webrtc/signaling.proto";

... other definitions...
我只希望消息类型/枚举在我的构建的构建文件(python/go/etc)中可用。我是否还必须为C#单独构建所有文件,然后分别复制它们?

最佳答案

您应该将proto文件的所有路径作为输入参数传递给protoc命令,例如:
protoc -I =“。”/MafiaProject/MafiaProtobuf/protofiles
--csharp_out =“。”/MafiaProject/MafiaProtobuf/csharp_out MafiaProject/MafiaProtobuf/protofiles/.proto MafiaProject/MafiaProtobuf/protofiles/webrtc/.proto
考虑如下的树结构:

MafiaProject
└── MafiaProtobuf
    ├── csharp_out
    │   ├── Mafia.cs
    │   └── Signaling.cs
    └── protofiles
        ├── mafia.proto
        └── webrtc
            └── signaling.proto

关于c# - 从其他项目protobuf文件导入消息类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65164229/

相关文章:

go - Go 编译文件如何在不同的操作系统或 CPU 架构上工作?

json - 通过 STDIN/STDOUT 使用 json 的 websocketd

mongodb - 如何将对象推送到 mongodb 数组中

c# - 'void' 没有重载匹配委托(delegate) 'ThreadStart'

python - 如何从 dialogflow API 访问 protobuf 响应中的信息

go - 如何使用 golang 在编译时不知道其类型的情况下解析 protobuf3 消息?

c++ - Protobuf 声明我缺少必填字段,而我显然不是

c# - 使用 regex + c# 限制邮件地址的最大长度

c# - 不确定如何在 C# 中测试一行代码

c# - 通过查询结果阻止访问