【问题标题】:Constructing a cs file from a proto file?从 proto 文件构造 cs 文件?
【发布时间】:2017-03-11 23:15:27
【问题描述】:

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

他们指示:

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'

【问题讨论】:

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


【解决方案1】:

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

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

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

“bar”不是一个选项。给出通用指令时,“foo”和“bar”通常用作占位符(https://en.wikipedia.org/wiki/Foobar

什么是“src”选项,总是“build/gen”吗?

src 不是一个选项。 src 是目录的占位符。您将用包含您的 proto 文件的目录替换“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”或 Google 示例中的“src/foo.proto”是 /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 用户而言!)

【讨论】:

    猜你喜欢
    • 2013-06-17
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多