C#使用protobuf
2016-01-25 10:48
447 查看
C#使用protobuf
•在https://github.com/jskeet/protobuf-csharp-port上下载压缩包 解压(google官方地址http://code.google.com/p/protobuf-csharp-port)•运行buildall 会生成一个build_output文件夹
•创建一个proto文件
•将刚才你的proto文件放在 \build_output\tools
•还是打开命令行,定位于对应的目录里面,你放proto文件的目录里面。
•输入:protoc --descriptor_set_out=msg.protobin --include_imports msg.proto
•msg.protobin是要生成的prtobobin文件,可以使用这个bin文件生成cs文件
•再输入protogen msg.protobin 使用该bin文件生成cs文件,这样你就可以得到该 msg.cs 的CSharp版文件了,同时在VS里面使用要引入Google.ProtocolBuffers.dll。为了
方便你可以将其做成一个批处理文件代码如下:
echo on
protoc --descriptor_set_out=msg.protobin --include_imports msg.proto
protogen msg.protobin
将其另存为.bat文件即可 运行即可生成相应***.proto文件对应的***..cs文件
将生成的 ***.cs文件导入到工程中给项目添加Google.ProtocolBuffers.dll引用
该文件在build_output文件夹中
项目->添加->引用->浏览->浏览->选择dll文件即可
例如编译一个msg.proto文件
package msginfo; message CMsg { required string msghead = 1; required string msgbody = 2; }
生成Msg.cs文件后导入工程
关键代码:
using msginfo; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ProtoExport { class Program { static void Main(string[] args) { //序列化 CMsg.Builder builder = new CMsg.Builder(); builder.SetMsghead("msghead"); builder.SetMsgbody("msgbody"); CMsg myMessage = builder.Build(); Console.WriteLine("------message body = " + myMessage.Msgbody); Console.WriteLine("------message head = " + myMessage.Msghead); //反序列化 byte[] buf = myMessage.ToByteArray(); CMsg myMessage2 = CMsg.ParseFrom(buf); Console.WriteLine("------message body = " + myMessage2.Msgbody); Console.WriteLine("------message head = " + myMessage2.Msghead); } } }
相关文章推荐
- GDAL2.0编译之添加HDF库编译C#版本
- c# 未能载入文件或程序集
- c#之交换两个变量的值
- c#之占位符
- C# 注销显示主窗体
- [C#]List的Sort()、Find()、FindAll()、Exist()的使用方法举例
- C# DES加解密
- 常用C#正则表达式汇总介绍
- C# 使用正则表达式
- C#中数组,ArrayList和List三者的区别
- C#的ArrayList集合的使用
- C#返回arraylist集合长度的方法是什么?C#ArrayList重复数据删除
- 让我们一起写出更有效的CSharp代码吧,少年们!
- C#中Form的Paint事件响应方法与重载虚方法OnPaint()的区别
- C# Socket例子留用
- C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值
- 我理解c#中的interface abstract virtual override和new
- C#去除字符串空格的几种方法1.
- C# 十六进制字符串与数值类型之间转换
- C#动态内存分配《不安全代码》