【问题标题】:protogen: create cs fileprotogen:创建cs文件
【发布时间】:2020-11-27 13:38:30
【问题描述】:

我正在尝试使用 Protogen 创建 C# 类,这是我的语法

 <Exec WorkingDirectory="..\..\ProtoFiles" Command="$(3rdParty)\protobuf\protobuf-net\protogen.exe  --proto_path:ClientsList.proto --csharp_out:ClientsList.cs" />

但没有创建 C# 类

当我使用相同的 proto 创建 C++ 类时,一切正常(我需要添加 syntax="proto2";我不知道这是否会影响 C# 部分)

如果我手动运行它:C:\3rdParty\protobuf\protobuf-net&gt;protogen.exe --proto_path:ClientsList.proto --csharp_out:ClientsList.cs

用法:protogen [OPTION] PROTO_FILES 解析 PROTO_FILES 并根据给定的选项生成输出:

-IPATH, --proto_path=PATH 指定要搜索的目录 进口。可以多次指定; 将按顺序搜索目录。如果不 给定,使用当前工作目录。

--version 显示版本信息并退出。

......

注意,PROTO_FILES 可以是 .proto 或 **/.proto(递归),当单个 导入位置用于处理找到的所有模式文件。在递归模式下, 从当前目录导入也可以只指定名称。

【问题讨论】:

  • 手动运行命令是否有效?
  • 没有,即使我编辑我的消息以添加手册,也没有任何错误消息

标签: c# protocol-buffers protobuf-net protogen


【解决方案1】:

csharp_out 参数是一个文件夹,而不是一个文件,这不是您使用 proto_path 的方式(同样,一个文件夹);它是=,而不是: - 在你的情况下你可能想要:

protogen --csharp_out=. ClientsList.proto

注意语法是protoc 命令行语法的镜像。

但是!还有一个 MSBuild 包,它可能更容易使用,而不是您自己的自定义任务,我正在研究“生成器”实现 - 这意味着零设置:只需添加 .proto 并运行。

【讨论】:

  • 你能提供更多关于发电机的信息吗?谢谢
  • @melom "generators" 是编译器中的一个全新功能 - 仅在几周内可用;我将在 protobuf-net.BuildTools 下使用它(昨天才发布 - 它提供了“分析器”,可以在您在 IDE 或命令行中键入代码时发现使用中的问题)。但是,“生成器”部分还没有完成。
  • @melom 这是一个正在运行的示例:github.com/protobuf-net/protobuf-net.ToolsDemo - 您正在寻找 UsageDemo/Generators/ShowUsage.csUsageDemo/Generators/model.proto
猜你喜欢
  • 2015-12-09
  • 2019-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 2013-06-06
  • 1970-01-01
  • 2012-03-09
相关资源
最近更新 更多