c# - 从其他项目 protobuf 文件导入消息类型
问题描述
我试图以一种方式构建我的 proto 文件,当我构建到各种语言时,我包含的 proto 文件是公开可用的。我已经尝试过import public "webrtc/signaling.proto"
,它删除了“未使用”消息,但是当我使用命令时,RTCMessage 的消息类型仍然不包含在我的 c# build Mafia.cs 中,./protoc.exe -I=G:/MafiaProject/MafiaProtobuf/protofiles --csharp_out=G:/MafiaProject/MafiaProtobuf/csharp_out G:/MafiaProject/MafiaProtobuf/protofiles/mafia.proto
但在我为 go 构建时似乎包含在内。
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
推荐阅读
- ruby-on-rails - Rals 5.2 - 如何为模块设置条件?
- javascript - 带有变量的 querySelectorAll 正则表达式
- wordpress - Posts_per_page 仅显示 5 个帖子
- python - np.einsum 字符串中的“a”是什么意思?
- angular - 选择器默认值稍后到达,然后在操作中设置值
- swift - 根据条件添加约束的奇怪行为
- python - 这个“for”结构在python中是如何工作的
- android - Android:检查应用内购买状态的最佳实践?
- sqlitestudio - SQLiteStudio 可以看到点击选项生成的 SQLite 查询吗?
- python - 如何防止 tkinter 画布的子窗口跨过画布滚动条