原生生物 Protoc编译器选项

我有一些.proto文件用于从Java,C ++和C#编译类。 对于Java和C ++,我使用Protoc编译器,对于C#,我使用Protogen。 用于创建Java / C ++类的脚本是

@ECHO OFF SET SRC_DIR=%~dp0 REM Make Java and C++ SET JAVA_OUT_DIR=%SRC_DIR%\..\taurus-messages-java\src\main\java if not exist %JAVA_OUT_DIR% ( mkdir %JAVA_OUT_DIR% ) SET CPP_OUT_DIR=%SRC_DIR%\..\taurus-messages-cpp if not exist %CPP_OUT_DIR% ( mkdir %CPP_OUT_DIR% ) protoc -I=%SRC_DIR% --java_out=%JAVA_OUT_DIR% --cpp_out=%CPP_OUT_DIR% %SRC_DIR%taurus-mux.proto protoc -I=%SRC_DIR% --java_out=%JAVA_OUT_DIR% --cpp_out=%CPP_OUT_DIR% %SRC_DIR%taurus-backtest.proto 

而对于我所拥有的C#类

 @ECHO OFF SET WORK_DIR=%~dp0 SET OUT_DIR=%WORK_DIR%\Messages SET SRC_DIR=%WORK_DIR%\..\..\..\Taurus\trunk\taurus-messages-proto\ if not exist %OUT_DIR% ( mkdir %OUT_DIR% ) cd %SRC_DIR% protogen -p:detectMissing -i:taurus-backtest.proto -o:%OUT_DIR%\TaurusBacktest.cs protogen -p:detectMissing -i:taurus-mux.proto -o:%OUT_DIR%\TaurusMux.cs cd %WORK_DIR% 

两个脚本都引用.proto文件(当然;])。 我在上面的C#脚本中添加了-p:detectMissing以生成允许我测试是否指定了字段的属性; 该选项为IsRequired = false所有字段创建*Specified

我的问题很简单,我想确保C#,C ++和Java类保持一致,但对于C#,我需要在Protogen中使用-p:detectMissing选项,使用-p:detectMissing的等效选项是什么?

谢谢你的时间。

如果我正确地理解了这个问题,那么就没有“等效”选项 – 它们是具有不同预期用途的不同工具。 如果您的主要驱动程序类似于类似用法,您可能需要查看protobuf-csharp-port,它在转移到C#时保留了非常相似的用法。 相比之下,protobuf-net并不试图提供与谷歌相同的API – 它充当了惯用的.NET序列化器,它恰好以protobuf格式进行通信。