Protobuf 之 .proto轉換為.cs檔案解析報錯處理方法
網上Protobuf 轉換.cs的部落格有很多,本文主要列舉一下轉換過程中可能出現的問題及報錯的解決方法。
可以在git上下載最新的protobuf自己解析,我的主頁裡分享有protobuf-3.13.0版本,
下載地址:
https://download.csdn.net/download/qq_43505432/12922490
下載後的檔案如圖:
.
或者直接下載解析工具protoGen,下載地址:https://download.csdn.net/download/qq_43505432/12922514
下載後的檔案如圖:
下面說說用protoGen解析工具怎麼轉.cs檔案。
將下載好的檔案中的protogen.exe拖拽到doc命令面板上,然後輸入 -i: 然後將要轉換的.proto檔案拖拽到doc面板上 ,然後輸入 -o:然後輸入要生成檔案所在目錄以及檔名稱
注意:解析路徑一定要是英文路徑
E:\ProtoBuf\ProtoGen\
是我放解析工具的地址,需要換成自己的地址。
E:\ProtoBuf\ProtoGen\protogen.exe -i:E:\ProtoBuf\ProtoGen\Text.proto -o:E:\ProtoBuf\ProtoGen\Text.cs
或者cd進入檔案內部再解析,如下圖:
輸入命令列回車,若無報錯則解析成功,可以看到檔案中多了.cs檔案。
報錯提示:File does not reside within any path specified using --proto_path (or -I). You must specify a --proto_path which encompasses this file. Note that the proto_path must be an exact prefix of the .proto file names – protoc is too dumb to figure out when two paths (e.g. absolute and relative) are equivalent (it’s harder than you think).
An error occurred parsing Test.proto
原因:增加了-i 後,protogen不在當前目錄尋找proto檔案了,所以找不到.proto檔案。
解決方案:
cd 進入檔案內部再開始解析,如下圖:
嘗試使用如下命令列(未親測,不知道行不行):
protogen --cpp_out=. Test.proto -I../data -I../config -I.
var foo = 'bar';
.
如下圖:
報錯提示: Unrecognized syntax identifier 「proto3」. This parser only recognizes 「proto2」.
An error occurred parsing backpack.proto
原因:很明顯,你下載的解析工具和要解析的.proto檔案不是同一個版本,可以開啟.proto檔案,檢視protobuf版本。根據提示下載相應版本的解析工具就行。
.