Protobuf 之 .proto转换为.cs文件方法及问题

Protobuf 之 .proto转换为.cs文件方法及问题

网上Protobuf 转换.cs的博客有很多,本文主要列举一下转换过程中可能出现的问题及报错的解决方法。

一、正常转换方法

1、准备资源

可以在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文件。

2、命令行转换

将下载好的文件中的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进入文件内部再解析,如下图:

扫描二维码关注公众号,回复: 11877576 查看本文章

在这里插入图片描述
输入命令行回车,若无报错则解析成功,可以看到文件中多了.cs文件。
在这里插入图片描述

二、命令行转换报错解决方案

1、提示路径错误,找不到.proto文件,如下图:

在这里插入图片描述

报错提示: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文件。

解决方案

  1. cd 进入文件内部再开始解析,如下图:
    在这里插入图片描述

  2. 尝试使用如下命令行(未亲测,不知道行不行):

protogen --cpp_out=. Test.proto -I../data -I../config -I.
var foo = 'bar';

.

2、Unrecognized syntax identifier “proto3”. This parser only recognizes “proto2”.,

如下图:

在这里插入图片描述
报错提示: Unrecognized syntax identifier “proto3”. This parser only recognizes “proto2”.
An error occurred parsing backpack.proto
原因:很明显,你下载的解析工具和要解析的.proto文件不是同一个版本,可以打开.proto文件,查看protobuf版本。根据提示下载相应版本的解析工具就行。
在这里插入图片描述

.

猜你喜欢

转载自blog.csdn.net/qq_43505432/article/details/109068458
今日推荐