从proto文件构造一个cs文件?

时间:2017-03-11 23:15:28

标签: c# protocol-buffers protocol-buffers-3

这可能看起来非常基本,但我对C#真的很陌生,所以google参考文档对我来说并不是那么清楚。

他们指示:

protoc --proto_path=bar --csharp_out=src --csharp_opt=base_namespace=Example player.proto

他们的例子是

protoc --proto_path=src --csharp_out=build/gen --csharp_opt=file_extension=.g.cs,base_namespace=Example src/foo.proto

所以我的基本问题清单是:

  • 对于proto_path,是从程序文件夹的顶层开始的

  • 什么是'bar'选项,它总是'src'吗?

  • 什么是'src'选项,它总是'build / gen'吗?

  • 这可以复印吗? '--csharp_opt = file_extension = .g.cs,base_namespace = MyProgram src / MyProtoFile.proto'

1 个答案:

答案 0 :(得分:0)

  
    

对于proto_path,这是从程序文件夹的顶层开始的

  

- proto_path 是存在要转换为cs文件的proto文件的位置。这与protoc可执行文件相关,但也可以设置为特定位置,例如--proto_path =" C:/ myprotofiles /"

  
    

什么是' bar'选项,它总是' src'?

  

"杆"不是一个选择。 "富"和" bar"在给出通用指令(https://en.wikipedia.org/wiki/Foobar

时,它们通常用作占位符
  
    

什么是' src'选项,它始终是&build; build / gen'?

  

src不是一个选项。 src是目录的占位符。你将取代" src"使用包含原型文件的目录。

- csharp_out是您希望输出C#文件的位置。这也与protoc可执行文件相关,但也可以设置为特定位置,例如--csharp_out =" C:/ mycsfiles /"

  
    

这可以复印吗? ' - csharp_opt = file_extension = .g.cs,base_namespace = MyProgram src / MyProtoFile.proto'

  

我在这里不太确定你的问题。这是两部分。

- csharp_opt设置选项。此示例将file_extension设置为.g.cs(因此输出文件将为somecsfile.g.cs),并将base_namespace设置为" MyProgram"所以生成的所有类都将在名为MyProgram的名称空间中。

" SRC / MyProtoFile.proto,"或者" src / foo.proto"在Google的示例中,是/ src目录中的proto文件。在我们的示例中,我们将用" c:/myprotofiles/myprotofile.proto"

替换它

所以,我们有:

protoc --proto_path="C:/myprotofiles/" --csharp_out="C:/mycsfiles/" --csharp_opt=file_extension=.g.cs,base_namespace=MyProtoFileNamespace "c:/myprotofiles/myprotofile.proto"

设置显式路径并不是必要的,但希望澄清事情(至少对Windows用户来说是这样!)