使用C# 作为开发语言,将pb文件转换为cs文件的时候相信很多人都会遇到一个很棘手的问题.
第一个问题:那就是protoc3环境下,import Timestamp的问题,在头部 import “google/protobuf/timestamp.proto”;的时候会抛异常:google/protobuf/timestamp.proto” was not found or had errors;
解决办法【博主「pamxy」的原创文章的分享】:
(注:之后才发现,不需要添加这个目录也可以,因为timestamp.proto生成的timestamp.pb.cc文件已经在编译libprotobuf.lib文件时作为源码编译进去了,而编译protoc.exe里也用到了libprotobuf.lib,所以自然默认已经有源码了,所以不用再导入!)
直接把import “google/protobuf/timestamp.proto删除即可。
第二个问题: “google.protobuf.Timestamp” is not defined.
一般情况下在protoc3环境下,是不需要直接导入google.protobuf.timestamp的,因为在编译的过程中会lib文件中会读取到这个问题,但如果在文件中调用了timestamp,如下:
那就要在头部调用一下timestamp这个文件了,但博主也是在调用过程中一直被提示 “google.protobuf.Timestamp” is not defined.
实在没办法,只好去查找这个文件的路径:protobuf-mastersrcgoogleprotobuf文件夹内的timestamp.proto文件,直接把文件copy到你要编译的文件的同级目录下,然后修改头部的timestamp文件调用路径:import “timestamp.proto”;
最后,这个文件终于解决了。。。。。。。
第三个问题:将protoc文件转成cs文件后怎么调用?
a、在引用的项目中找到: 工具>>NuGet包管理器>>管理解决方案的NuGet程序包>>搜索”Google.ProtocolBuffers”并安装
b、直接将protoc文件转换成的cs文件引入项目中,调用。
这个小问题记录一下,也方便大家在遇到这个问题的时候作为参考。