c# - protogen:创建cs文件
问题描述
我正在尝试使用 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>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(递归),以处理找到的所有模式文件。在递归模式下,从当前目录导入也可以仅通过名称指定。
解决方案
csharp_out 参数是一个文件夹,而不是一个文件,这不是你使用 proto_path 的方式(同样,一个文件夹);它是=
,不是:
- 在你的情况下你可能想要:
protogen --csharp_out=. ClientsList.proto
请注意,该语法故意是protoc
命令行语法的镜像。
然而!还有一个 MSBuild 包可能更容易使用而不是您自己的自定义任务,我正在研究“生成器”实现 - 这意味着零设置:只需添加 .proto 并运行。