是否可以根据单个.proto文件生成protogen输出多个文件(每个类一个)?
我正在处理一个非常大的.proto文件,它输出大约200个类,目前都在一个文件中。我需要使用生成的类的地方之一是在高度内存受限的环境中(Windows Phone后台代理)。
我希望能够只在受约束环境中加载的程序集中包含必要的类,但是当生成的类都在一个文件中时,不能轻易地执行此操作。如果我可以将它们输出到多个文件,我只能在受约束环境的程序集中链接我需要的文件。
有没有办法让protogen在单独的文件中输出类?我看不到这个选项,目前只使用umbrella-classname
选项。
手动编辑生成的文件不是一个选项,所以如果protogen无法做到,是否有另一个命令行工具可以拆分包含多个类的文件? (为了节省重新发明的轮子。)
更新
我正在使用Google.ProtocolBuffers.dll
继承的决定而且不易改变
编辑/拆分.proto文件也不是一个可能性。 (除非作为自定义步骤。)
答案 0 :(得分:0)
我们在csharp_options中有一个选项,但它没有实现:
// Whether to generate a single file for everything within the
// .proto file (false), or one file per message (true).
// This option is not currently honored; please log a feature
// request if you really want it.
optional bool multiple_files = 4;
鉴于您必须删除相关文件并确保您拥有正确的所有依赖,听起来它实际上并不能为您提供更多的工作,而不是我建议的解决方案将原型文件拆分为单独的文件您说这也是“不可能”但基本上我现在可以建议 - 为什么不可能?
编辑:我刚才有了另一个想法。您可以运行protoc
protogen
步骤(如果您没有另外指定,现在会自动完成)将.proto
文件解析为其描述符。然后将描述符加载到另一个程序中,像对待任何其他protobuf消息一样进行变异(从中创建构建器,编辑消息,构建),然后保存描述符。然后,您可以在剩余的描述符上使用protogen,并仅生成您想要的类...