2025年protobuf如何使用Protogen工具生成CS代码详细教学篇

protobuf如何使用Protogen工具生成CS代码详细教学篇关于 Google Protobuffer 我就不详述了 本文章手把手教学如何使用 Protogen exe 生成 proto 对应的 cs 代码 基础操作 第一步 下载 protogen 文件 我使用的 Protogen 版本为 protobuf net r668 zip 网盘下载地址 https pan baidu

大家好,我是讯享网,很高兴认识大家。

关于Google Protobuffer我就不详述了,本文章手把手教学如何使用Protogen.exe生成proto对应的cs代码

[基础操作 第一步]下载protogen文件

我使用的Protogen版本为 protobuf-net r668.zip

网盘下载地址:https://pan.baidu.com/s/1aE2iFp95NahJ_iAPDqxsoA

提取码:tc1b

[基础操作 第二步]解压文件

Zip包里文件很多,本篇文章只用其中的ProtoGen文件夹,ProtoGen文件夹解压到任意位置,我解压到桌面方便做初步探索


讯享网

这是文件夹初步的状态

[基础操作 第三步]编写export.bat或 export.cmd

bat文件和cmd文件有啥区别请自行查阅

bat文件或cmd文件创建个txt文本文件即可,把后缀改为bat.系统会提示修改后可能无法使用,选择确认,如下图所示

小提示:编写proto文件最好是用 notpad++ 或者editplus ,我用的notpad++

用notpad++打开export.bat文件,以下是文件内容截图和代码段

@echo off set tool = ProtoGen set proto = NetStruct_FightInfo.proto "protogen.exe" -i:C:\Users\liuyongjie\Desktop\ProtoGen\MyFirstProto.proto -o:MyFirstProto.cs -ns:ProtoBuf pause

讯享网

[基础操作 第四步] 编写.proto文件

proto文件的创建和bat文件相同,也是创建一个txt文本文件,修改后缀,之后用 notpad++编写

以下是截图和代码段

讯享网message BuffData { optional int32 id = 1; // 配表id optional int32 buffSid = 2; optional int32 opt = 3; optional int32 delReason = 4; optional int32 leftRound = 5; optional int32 owner = 6; }

[基础操作 第五步]双击export.bat文件

[基础操作 第六步]查看生成文件

如果你生成失败了,请检查代码和拼写错误,代码可以直接复制我的

至此,我们完了最基础版proto生成,下面开始教学批量生成

批量生成proto对应版本的文件介绍

项目中有很多proto文件,每一个proto都写一个bat文件去执行很显然是愚蠢的。

批量生成proto的方式目前来看有两种比较流行的方式

方法一:在bat文件中遍历文件夹,并批量转换,这种方式与本篇文章的方式较相似

方法二:编写python工程,也是遍历文件夹,python代码拼接好输入与输出信息并通过system.cmd指令调用外部的protogen.exe文件

无论是方法一还是二,其根本底层逻辑还是使用protogen.exe文件生成,因为工具的使用方式是不能改变的,因此我们只能改变调用方式。

以我个人经验来看,项目中一定会使用第二种方式,原因是在导出proto的过程中,还要有一些其他操作,例如生成协议号、合并协议工具等操作,因此python工程很有存在的必要。

下面我们就开始教学第一种方法

[方法一 第一步]构建测试文件夹目录结构

在桌面上创建一个文件夹src,文件夹内放3个文件夹,ProtoGen就是我们上述的工具,里面放着可执行文件protogen.exe,proto文件夹存放着我们编写好的.proto文件,例如上述文章中的MyFirstProto.proto。exportFolder文件夹是即将导出的目标文件夹,因为我们不希望源proto和即将生成的cs文件混在一起,不利于我们后期处理。

[方法一 第二步] 编写几个新的proto文件

下面开始编写几个新的proto,名字可以自己写,不用与我完全对应,但必须以.proto结尾

[方法一 第三步] 编写批处理bat文件

和基础操作第五步编写export.bat文件一样,在src\proto文件夹中编写一个新的batchExport.bat文件,batch的意思就是批量。

代码我就不截图了。直接上代码段,需要的可以直接复制进去

@echo off ::协议文件路径, 最后不要跟“\”符号 set SOURCE_FOLDER=. ::C#编译器路径 set CS_COMPILER_PATH=..\ProtoGen\protogen.exe ::C#文件生成路径, 最后不要跟“\”符号 set CS_TARGET_PATH=..\exportFolder ::删除之前创建的文件 del %CS_TARGET_PATH%\*.* /f /s /q ::遍历所有文件 for /f "delims=" %%i in ('dir /b "%SOURCE_FOLDER%\*.proto"') do ( ::生成 C# 代码 echo %CS_COMPILER_PATH% -i:%%i -o:%CS_TARGET_PATH%\%%~ni.cs %CS_COMPILER_PATH% -i:%%i -o:%CS_TARGET_PATH%\%%~ni.cs ) echo Generate Success!!!!! pause

[方法一 第四步] 双击batchExport.bat执行

不出意外,你会看到和我一样的结果,如下图

因为在批处理中写入清空输出文件夹的代码,如果你再次执行, 则会看到先删除目标文件夹内的所有文件,然后再次生成

[方法一 第四步] 把batchExport.bat移到上一层文件夹src内

为何要把batchExport.bat移出去,目的是要让proto文件夹保持干净, 工具和指令性的文件往外放,由于文件路径发生了改变,因此要修改batchExport.bat中的路径代码

讯享网@echo off ::proto文件夹路径 set SOURCE_FOLDER=.\proto ::C#编译器路径 set CS_COMPILER_PATH=.\ProtoGen\protogen.exe ::C#文件生成路径 set CS_TARGET_PATH=.\exportFolder ::删除之前创建的文件 del %CS_TARGET_PATH%\*.* /f /s /q ::遍历所有文件 for /f "delims=" %%i in ('dir /b "%SOURCE_FOLDER%\*.proto"') do ( ::生成 C# 代码,下面这个echo可以注释掉,也可以留着输出生成信息 echo %CS_COMPILER_PATH% -i:%SOURCE_FOLDER%\%%i -o:%CS_TARGET_PATH%\%%~ni.cs %CS_COMPILER_PATH% -i:%SOURCE_FOLDER%\%%i -o:%CS_TARGET_PATH%\%%~ni.cs ) echo Generate Success!!!!! pause

 demo下载完后解压到任意位置即可直接使用

百度网盘链接:https://pan.baidu.com/s/14_Guhz-f-Cb9xnfgXYsw
提取码:409c   

 

到此,方法一教程完结,下面开始方法二教学

[方法二 第一步] 新建与配置python工程

我喜欢使用vscode写python,编写代码前需要先安装和配置vscode,下载python 插件等,可在vscode中的扩展商店直接搜索python下载,我安装的版本是

关于如何配置vscode,我一般是搜索CSDN的文章学着如何配,请大家自行搜索。

[方法二 第二步] 创建python代码

写python代码前,应该具备python语法基础,如果不会先去W3C学院去看看基础。

还有就是写python会应用到各种库,在每个.py文件开头需要各种import库,python常用库就那么几个,请自省搜索查阅。

 

 

小讯
上一篇 2025-02-15 21:19
下一篇 2025-01-10 13:42

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/67235.html