首页 > 解决方案 > 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(递归),以处理找到的所有模式文件。在递归模式下,从当前目录导入也可以仅通过名称指定。

标签: c#protocol-buffersprotobuf-netprotogen

解决方案


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

protogen --csharp_out=. ClientsList.proto

请注意,该语法故意是protoc命令行语法的镜像。

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


推荐阅读