您的位置:首页 > 编程语言 > C#

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);

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: