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

关于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-Cb9xqqnfgXYsw
提取码:409c   

 

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

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

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

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

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

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

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

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Little丶Seven

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值